2006-10-18 Dave Brolley <brolley@redhat.com>
[deliverable/binutils-gdb.git] / sim / sh64 / sem-compact.c
index fae6877772ac76592e0da65c4f4dfd61a5b2fc28..3774cf582527c023fd3f893457ec0d67a685e17d 100644 (file)
@@ -2,9 +2,9 @@
 
 THIS FILE IS MACHINE GENERATED WITH CGEN.
 
-Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+Copyright 1996-2005 Free Software Foundation, Inc.
 
-This file is part of the GNU Simulators.
+This file is part of the GNU simulators.
 
 This program is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -18,7 +18,7 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License along
 with this program; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
 
 */
 
@@ -206,7 +206,7 @@ SEM_FN_NAME (sh64_compact,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,add_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -215,7 +215,7 @@ SEM_FN_NAME (sh64_compact,add_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -236,7 +236,7 @@ SEM_FN_NAME (sh64_compact,addi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), EXTQISI (ANDQI (FLD (f_imm8), 255)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -248,7 +248,7 @@ SEM_FN_NAME (sh64_compact,addi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,addc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -260,7 +260,7 @@ SEM_FN_NAME (sh64_compact,addc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDCSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)), GET_H_TBIT ());
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = tmp_flag;
@@ -278,7 +278,7 @@ SEM_FN_NAME (sh64_compact,addc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,addv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -290,7 +290,7 @@ SEM_FN_NAME (sh64_compact,addv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = tmp_t;
@@ -308,7 +308,7 @@ SEM_FN_NAME (sh64_compact,addv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,and_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -317,7 +317,7 @@ SEM_FN_NAME (sh64_compact,and_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     DI opval = ANDDI (GET_H_GR (FLD (f_rm)), GET_H_GR (FLD (f_rn)));
     SET_H_GR (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn64", 'D', opval);
+    TRACE_RESULT (current_cpu, abuf, "gr", 'D', opval);
   }
 
   return vpc;
@@ -338,7 +338,7 @@ SEM_FN_NAME (sh64_compact,andi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ANDSI (GET_H_GRC (((UINT) 0)), ZEXTSIDI (FLD (f_imm8)));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -412,14 +412,23 @@ SEM_FN_NAME (sh64_compact,bfs_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
 if (NOTBI (GET_H_TBIT ())) {
+{
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
 {
   {
     UDI opval = FLD (i_disp8);
     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
-    written |= (1 << 2);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
   }
 }
+}
 }
 
   abuf->written = written;
@@ -440,12 +449,20 @@ SEM_FN_NAME (sh64_compact,bra_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_BRANCH_INIT
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
 {
   {
     UDI opval = FLD (i_disp12);
     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
     TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
   }
+}
 }
 
   SEM_BRANCH_FINI (vpc);
@@ -465,12 +482,20 @@ SEM_FN_NAME (sh64_compact,braf_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_BRANCH_INIT
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
 {
   {
     UDI opval = ADDDI (EXTSIDI (GET_H_GRC (FLD (f_rn))), ADDDI (pc, 4));
     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
     TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
   }
+}
 }
 
   SEM_BRANCH_FINI (vpc);
@@ -514,6 +539,14 @@ SEM_FN_NAME (sh64_compact,bsr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
     SET_H_PR (opval);
     TRACE_RESULT (current_cpu, abuf, "pr", 'x', opval);
   }
+}
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
+{
   {
     UDI opval = FLD (i_disp12);
     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
@@ -546,6 +579,14 @@ SEM_FN_NAME (sh64_compact,bsrf_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
     SET_H_PR (opval);
     TRACE_RESULT (current_cpu, abuf, "pr", 'x', opval);
   }
+}
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
+{
   {
     UDI opval = ADDDI (EXTSIDI (GET_H_GRC (FLD (f_rn))), ADDDI (pc, 4));
     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
@@ -599,14 +640,23 @@ SEM_FN_NAME (sh64_compact,bts_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
 if (GET_H_TBIT ()) {
+{
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
 {
   {
     UDI opval = FLD (i_disp8);
     SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
-    written |= (1 << 2);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
   }
 }
+}
 }
 
   abuf->written = written;
@@ -690,7 +740,7 @@ SEM_FN_NAME (sh64_compact,clrt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,cmpeq_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -732,7 +782,7 @@ SEM_FN_NAME (sh64_compact,cmpeqi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,cmpge_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -753,7 +803,7 @@ SEM_FN_NAME (sh64_compact,cmpge_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,cmpgt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -774,7 +824,7 @@ SEM_FN_NAME (sh64_compact,cmpgt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,cmphi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -795,7 +845,7 @@ SEM_FN_NAME (sh64_compact,cmphi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,cmphs_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -858,7 +908,7 @@ SEM_FN_NAME (sh64_compact,cmppz_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,cmpstr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -888,7 +938,7 @@ SEM_FN_NAME (sh64_compact,cmpstr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,div0s_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -954,7 +1004,7 @@ SEM_FN_NAME (sh64_compact,div0u_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,div1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -973,7 +1023,7 @@ SEM_FN_NAME (sh64_compact,div1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SLLSI (GET_H_GRC (FLD (f_rn)), 1), ZEXTBISI (GET_H_TBIT ()));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 if (NOTBI (tmp_oldq)) {
 if (NOTBI (GET_H_MBIT ())) {
@@ -982,7 +1032,7 @@ if (NOTBI (GET_H_MBIT ())) {
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   tmp_tmp1 = GTUSI (GET_H_GRC (FLD (f_rn)), tmp_tmp0);
 if (NOTBI (GET_H_QBIT ())) {
@@ -1005,7 +1055,7 @@ if (NOTBI (GET_H_QBIT ())) {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   tmp_tmp1 = LTUSI (GET_H_GRC (FLD (f_rn)), tmp_tmp0);
 if (NOTBI (GET_H_QBIT ())) {
@@ -1030,7 +1080,7 @@ if (NOTBI (GET_H_MBIT ())) {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), GET_H_GRC (FLD (f_rn)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   tmp_tmp1 = LTUSI (GET_H_GRC (FLD (f_rn)), tmp_tmp0);
 if (NOTBI (GET_H_QBIT ())) {
@@ -1053,7 +1103,7 @@ if (NOTBI (GET_H_QBIT ())) {
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   tmp_tmp1 = GTUSI (GET_H_GRC (FLD (f_rn)), tmp_tmp0);
 if (NOTBI (GET_H_QBIT ())) {
@@ -1083,12 +1133,54 @@ if (NOTBI (GET_H_QBIT ())) {
 #undef FLD
 }
 
+/* divu-compact: divu r0, $rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,divu_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = UDIVSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (((UINT) 0)));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* mulr-compact: mulr r0, $rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,mulr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = MULSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (((UINT) 0)));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
 /* dmulsl-compact: dmuls.l $rm, $rn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,dmulsl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1118,7 +1210,7 @@ SEM_FN_NAME (sh64_compact,dmulsl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,dmulul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1158,7 +1250,7 @@ SEM_FN_NAME (sh64_compact,dt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), 1);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = EQSI (GET_H_GRC (FLD (f_rn)), 0);
@@ -1176,7 +1268,7 @@ SEM_FN_NAME (sh64_compact,dt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,extsb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1185,7 +1277,7 @@ SEM_FN_NAME (sh64_compact,extsb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTQISI (SUBWORDSIQI (GET_H_GRC (FLD (f_rm)), 3));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -1197,7 +1289,7 @@ SEM_FN_NAME (sh64_compact,extsb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,extsw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1206,7 +1298,7 @@ SEM_FN_NAME (sh64_compact,extsw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTHISI (SUBWORDSIHI (GET_H_GRC (FLD (f_rm)), 1));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -1218,7 +1310,7 @@ SEM_FN_NAME (sh64_compact,extsw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,extub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1227,7 +1319,7 @@ SEM_FN_NAME (sh64_compact,extub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ZEXTQISI (SUBWORDSIQI (GET_H_GRC (FLD (f_rm)), 3));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -1239,7 +1331,7 @@ SEM_FN_NAME (sh64_compact,extub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,extuw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1248,7 +1340,7 @@ SEM_FN_NAME (sh64_compact,extuw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ZEXTHISI (SUBWORDSIHI (GET_H_GRC (FLD (f_rm)), 1));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -1268,17 +1360,17 @@ SEM_FN_NAME (sh64_compact,fabs_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_fabsd (current_cpu, GET_H_DR (FLD (f_rn)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_fabsd (current_cpu, GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fabss (current_cpu, GET_H_FRC (FLD (f_rn)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fabss (current_cpu, GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -1292,7 +1384,7 @@ if (GET_H_PRBIT ()) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fadd_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1300,17 +1392,17 @@ SEM_FN_NAME (sh64_compact,fadd_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_faddd (current_cpu, GET_H_DR (FLD (f_rm)), GET_H_DR (FLD (f_rn)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_faddd (current_cpu, GET_H_FSD (FLD (f_rm)), GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fadds (current_cpu, GET_H_FRC (FLD (f_rm)), GET_H_FRC (FLD (f_rn)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fadds (current_cpu, GET_H_FSD (FLD (f_rm)), GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -1324,7 +1416,7 @@ if (GET_H_PRBIT ()) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fcmpeq_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1332,16 +1424,16 @@ SEM_FN_NAME (sh64_compact,fcmpeq_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 
 if (GET_H_PRBIT ()) {
   {
-    BI opval = sh64_fcmpeqd (current_cpu, GET_H_DR (FLD (f_rm)), GET_H_DR (FLD (f_rn)));
+    BI opval = sh64_fcmpeqd (current_cpu, GET_H_FSD (FLD (f_rm)), GET_H_FSD (FLD (f_rn)));
     SET_H_TBIT (opval);
-    written |= (1 << 7);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "tbit", 'x', opval);
   }
 } else {
   {
-    BI opval = sh64_fcmpeqs (current_cpu, GET_H_FRC (FLD (f_rm)), GET_H_FRC (FLD (f_rn)));
+    BI opval = sh64_fcmpeqs (current_cpu, GET_H_FSD (FLD (f_rm)), GET_H_FSD (FLD (f_rn)));
     SET_H_TBIT (opval);
-    written |= (1 << 7);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "tbit", 'x', opval);
   }
 }
@@ -1356,7 +1448,7 @@ if (GET_H_PRBIT ()) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fcmpgt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1364,16 +1456,16 @@ SEM_FN_NAME (sh64_compact,fcmpgt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 
 if (GET_H_PRBIT ()) {
   {
-    BI opval = sh64_fcmpgtd (current_cpu, GET_H_DR (FLD (f_rn)), GET_H_DR (FLD (f_rm)));
+    BI opval = sh64_fcmpgtd (current_cpu, GET_H_FSD (FLD (f_rn)), GET_H_FSD (FLD (f_rm)));
     SET_H_TBIT (opval);
-    written |= (1 << 7);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "tbit", 'x', opval);
   }
 } else {
   {
-    BI opval = sh64_fcmpgts (current_cpu, GET_H_FRC (FLD (f_rn)), GET_H_FRC (FLD (f_rm)));
+    BI opval = sh64_fcmpgts (current_cpu, GET_H_FSD (FLD (f_rn)), GET_H_FSD (FLD (f_rm)));
     SET_H_TBIT (opval);
-    written |= (1 << 7);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "tbit", 'x', opval);
   }
 }
@@ -1388,7 +1480,7 @@ if (GET_H_PRBIT ()) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fcnvds_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_fcnvds_compact.f
+#define FLD(f) abuf->fields.sfmt_fmov8_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1397,7 +1489,7 @@ SEM_FN_NAME (sh64_compact,fcnvds_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SF opval = sh64_fcnvds (current_cpu, GET_H_DRC (FLD (f_dn)));
     CPU (h_fr[((UINT) 32)]) = opval;
-    TRACE_RESULT (current_cpu, abuf, "fpul", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
   }
 
   return vpc;
@@ -1409,7 +1501,7 @@ SEM_FN_NAME (sh64_compact,fcnvds_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fcnvsd_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_fcnvds_compact.f
+#define FLD(f) abuf->fields.sfmt_fmov8_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1418,7 +1510,7 @@ SEM_FN_NAME (sh64_compact,fcnvsd_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     DF opval = sh64_fcnvsd (current_cpu, CPU (h_fr[((UINT) 32)]));
     SET_H_DRC (FLD (f_dn), opval);
-    TRACE_RESULT (current_cpu, abuf, "drn", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "drc", 'f', opval);
   }
 
   return vpc;
@@ -1430,7 +1522,7 @@ SEM_FN_NAME (sh64_compact,fcnvsd_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fdiv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1438,17 +1530,17 @@ SEM_FN_NAME (sh64_compact,fdiv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_fdivd (current_cpu, GET_H_DR (FLD (f_rn)), GET_H_DR (FLD (f_rm)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_fdivd (current_cpu, GET_H_FSD (FLD (f_rn)), GET_H_FSD (FLD (f_rm)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fdivs (current_cpu, GET_H_FRC (FLD (f_rn)), GET_H_FRC (FLD (f_rm)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fdivs (current_cpu, GET_H_FSD (FLD (f_rn)), GET_H_FSD (FLD (f_rm)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -1468,28 +1560,13 @@ SEM_FN_NAME (sh64_compact,fipr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
-{
-  QI tmp_m;
-  QI tmp_n;
-  SF tmp_res;
-  tmp_m = FLD (f_vm);
-  tmp_n = FLD (f_vn);
-  tmp_res = sh64_fmuls (current_cpu, GET_H_FVC (FLD (f_vm)), GET_H_FVC (FLD (f_vn)));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_FRC (ADDQI (tmp_m, 1)), GET_H_FRC (ADDQI (tmp_n, 1))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_FRC (ADDQI (tmp_m, 2)), GET_H_FRC (ADDQI (tmp_n, 2))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_FRC (ADDQI (tmp_m, 3)), GET_H_FRC (ADDQI (tmp_n, 3))));
-  {
-    SF opval = tmp_res;
-    SET_H_FRC (ADDQI (tmp_n, 3), opval);
-    TRACE_RESULT (current_cpu, abuf, "frc-add--DFLT-n-3", 'f', opval);
-  }
-}
+sh64_fipr (current_cpu, FLD (f_vm), FLD (f_vn));
 
   return vpc;
 #undef FLD
 }
 
-/* flds-compact: flds $frn */
+/* flds-compact: flds $frn, fpul */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,flds_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -1503,7 +1580,7 @@ SEM_FN_NAME (sh64_compact,flds_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SF opval = GET_H_FRC (FLD (f_rn));
     CPU (h_fr[((UINT) 32)]) = opval;
-    TRACE_RESULT (current_cpu, abuf, "fpul", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
   }
 
   return vpc;
@@ -1524,7 +1601,7 @@ SEM_FN_NAME (sh64_compact,fldi0_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SF opval = sh64_fldi0 (current_cpu);
     SET_H_FRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "frc", 'f', opval);
   }
 
   return vpc;
@@ -1545,7 +1622,7 @@ SEM_FN_NAME (sh64_compact,fldi1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SF opval = sh64_fldi1 (current_cpu);
     SET_H_FRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "frc", 'f', opval);
   }
 
   return vpc;
@@ -1566,16 +1643,16 @@ SEM_FN_NAME (sh64_compact,float_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 if (GET_H_PRBIT ()) {
   {
     DF opval = sh64_floatld (current_cpu, CPU (h_fr[((UINT) 32)]));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_floatls (current_cpu, CPU (h_fr[((UINT) 32)]));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_floatls (current_cpu, CPU (h_fr[((UINT) 32)]));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -1589,7 +1666,7 @@ if (GET_H_PRBIT ()) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmac_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1598,78 +1675,40 @@ SEM_FN_NAME (sh64_compact,fmac_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SF opval = sh64_fmacs (current_cpu, GET_H_FRC (((UINT) 0)), GET_H_FRC (FLD (f_rm)), GET_H_FRC (FLD (f_rn)));
     SET_H_FRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "frc", 'f', opval);
   }
 
   return vpc;
 #undef FLD
 }
 
-/* fmov1-compact: fmov $frm, $frn */
+/* fmov1-compact: fmov $fmovm, $fmovn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
-if (NOTBI (GET_H_SZBIT ())) {
   {
-    SF opval = GET_H_FRC (FLD (f_rm));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 6);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
+    DF opval = GET_H_FMOV (FLD (f_rm));
+    SET_H_FMOV (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
-} else {
-if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
-if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
-  {
-    DF opval = GET_H_XD (((FLD (f_rm)) & (INVQI (1))));
-    SET_H_XD (((FLD (f_rn)) & (INVQI (1))), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "xd-and--DFLT-index-of--DFLT-frn-inv--QI-1", 'f', opval);
-  }
-} else {
-  {
-    DF opval = GET_H_XD (((FLD (f_rm)) & (INVQI (1))));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-frn", 'f', opval);
-  }
-}
-} else {
-if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
-  {
-    DF opval = GET_H_DR (FLD (f_rm));
-    SET_H_XD (((FLD (f_rn)) & (INVQI (1))), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "xd-and--DFLT-index-of--DFLT-frn-inv--QI-1", 'f', opval);
-  }
-} else {
-  {
-    DF opval = GET_H_DR (FLD (f_rm));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-frn", 'f', opval);
-  }
-}
-}
-}
 
-  abuf->written = written;
   return vpc;
 #undef FLD
 }
 
-/* fmov2-compact: fmov @$rm, $frn */
+/* fmov2-compact: fmov @$rm, $fmovn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1677,27 +1716,18 @@ SEM_FN_NAME (sh64_compact,fmov2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (NOTBI (GET_H_SZBIT ())) {
   {
-    SF opval = GETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
-  }
-} else {
-if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
-  {
-    DF opval = GETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
-    SET_H_XD (((FLD (f_rn)) & (INVQI (1))), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "xd-and--DFLT-index-of--DFLT-frn-inv--QI-1", 'f', opval);
+    DF opval = GETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
+    SET_H_FMOV (FLD (f_rn), opval);
+    written |= (1 << 4);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
 } else {
   {
     DF opval = GETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 6);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-frn", 'f', opval);
+    SET_H_FMOV (FLD (f_rn), opval);
+    written |= (1 << 4);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
-}
 }
 
   abuf->written = written;
@@ -1705,12 +1735,12 @@ if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
 #undef FLD
 }
 
-/* fmov3-compact: fmov @${rm}+, frn */
+/* fmov3-compact: fmov @${rm}+, fmovn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov3_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1719,40 +1749,31 @@ SEM_FN_NAME (sh64_compact,fmov3_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 if (NOTBI (GET_H_SZBIT ())) {
 {
   {
-    SF opval = GETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
+    DF opval = GETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
+    SET_H_FMOV (FLD (f_rn), opval);
+    written |= (1 << 4);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 4);
     SET_H_GRC (FLD (f_rm), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    written |= (1 << 5);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 } else {
 {
-if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
-  {
-    DF opval = GETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
-    SET_H_XD (((FLD (f_rn)) & (INVQI (1))), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "xd-and--DFLT-index-of--DFLT-frn-inv--QI-1", 'f', opval);
-  }
-} else {
   {
     DF opval = GETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 6);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-frn", 'f', opval);
+    SET_H_FMOV (FLD (f_rn), opval);
+    written |= (1 << 4);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
-}
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 8);
     SET_H_GRC (FLD (f_rm), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    written |= (1 << 5);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 }
@@ -1762,12 +1783,12 @@ if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
 #undef FLD
 }
 
-/* fmov4-compact: fmov @(r0, $rm), $frn */
+/* fmov4-compact: fmov @(r0, $rm), $fmovn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov4_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1775,27 +1796,18 @@ SEM_FN_NAME (sh64_compact,fmov4_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (NOTBI (GET_H_SZBIT ())) {
   {
-    SF opval = GETMEMSF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm))));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 6);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
-  }
-} else {
-if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
-  {
-    DF opval = GETMEMDF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm))));
-    SET_H_XD (((FLD (f_rn)) & (INVQI (1))), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "xd-and--DFLT-index-of--DFLT-frn-inv--QI-1", 'f', opval);
+    DF opval = GETMEMSF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm))));
+    SET_H_FMOV (FLD (f_rn), opval);
+    written |= (1 << 5);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
 } else {
   {
     DF opval = GETMEMDF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm))));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-frn", 'f', opval);
+    SET_H_FMOV (FLD (f_rn), opval);
+    written |= (1 << 5);
+    TRACE_RESULT (current_cpu, abuf, "fmov", 'f', opval);
   }
-}
 }
 
   abuf->written = written;
@@ -1803,12 +1815,12 @@ if (EQSI (ANDSI (FLD (f_rn), 1), 1)) {
 #undef FLD
 }
 
-/* fmov5-compact: fmov $frm, @$rn */
+/* fmov5-compact: fmov $fmovm, @$rn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1816,27 +1828,18 @@ SEM_FN_NAME (sh64_compact,fmov5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (NOTBI (GET_H_SZBIT ())) {
   {
-    SF opval = GET_H_FRC (FLD (f_rm));
+    SF opval = GET_H_FMOV (FLD (f_rm));
     SETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rn)), opval);
-    written |= (1 << 6);
-    TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
-  }
-} else {
-if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
-  {
-    DF opval = GET_H_XD (((FLD (f_rm)) & (INVQI (1))));
-    SETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rn)), opval);
-    written |= (1 << 7);
+    written |= (1 << 4);
     TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
   }
 } else {
   {
-    DF opval = GET_H_DR (FLD (f_rm));
+    DF opval = GET_H_FMOV (FLD (f_rm));
     SETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rn)), opval);
-    written |= (1 << 7);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
   }
-}
 }
 
   abuf->written = written;
@@ -1844,12 +1847,12 @@ if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
 #undef FLD
 }
 
-/* fmov6-compact: fmov $frm, @-$rn */
+/* fmov6-compact: fmov $fmovm, @-$rn */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1860,13 +1863,13 @@ if (NOTBI (GET_H_SZBIT ())) {
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 5);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
-    SF opval = GET_H_FRC (FLD (f_rm));
+    SF opval = GET_H_FMOV (FLD (f_rm));
     SETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rn)), opval);
-    written |= (1 << 6);
+    written |= (1 << 4);
     TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
   }
 }
@@ -1875,25 +1878,16 @@ if (NOTBI (GET_H_SZBIT ())) {
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), 8);
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
-  }
-if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
-  {
-    DF opval = GET_H_XD (((FLD (f_rm)) & (INVQI (1))));
-    SETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rn)), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
+    written |= (1 << 5);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
-} else {
   {
-    DF opval = GET_H_DR (FLD (f_rm));
+    DF opval = GET_H_FMOV (FLD (f_rm));
     SETMEMDF (current_cpu, pc, GET_H_GRC (FLD (f_rn)), opval);
-    written |= (1 << 7);
+    written |= (1 << 3);
     TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
   }
 }
-}
 }
 
   abuf->written = written;
@@ -1901,12 +1895,12 @@ if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
 #undef FLD
 }
 
-/* fmov7-compact: fmov $frm, @(r0, $rn) */
+/* fmov7-compact: fmov $fmovm, @(r0, $rn) */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmov7_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1914,30 +1908,63 @@ SEM_FN_NAME (sh64_compact,fmov7_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (NOTBI (GET_H_SZBIT ())) {
   {
-    SF opval = GET_H_FRC (FLD (f_rm));
+    SF opval = GET_H_FMOV (FLD (f_rm));
     SETMEMSF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rn))), opval);
-    written |= (1 << 7);
+    written |= (1 << 5);
     TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
   }
 } else {
-if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
   {
-    DF opval = GET_H_XD (((FLD (f_rm)) & (INVQI (1))));
+    DF opval = GET_H_FMOV (FLD (f_rm));
     SETMEMDF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rn))), opval);
-    written |= (1 << 8);
+    written |= (1 << 4);
     TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
   }
-} else {
+}
+
+  abuf->written = written;
+  return vpc;
+#undef FLD
+}
+
+/* fmov8-compact: fmov.d @($imm12x8, $rm), $drn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,fmov8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_fmov8_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+
   {
-    DF opval = GET_H_DR (FLD (f_rm));
-    SETMEMDF (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rn))), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
+    DF opval = GETMEMDF (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rm)), FLD (f_imm12x8)));
+    SET_H_DRC (FLD (f_dn), opval);
+    TRACE_RESULT (current_cpu, abuf, "drc", 'f', opval);
   }
-}
+
+  return vpc;
+#undef FLD
 }
 
-  abuf->written = written;
+/* fmov9-compact: mov.l $drm, @($imm12x8, $rn) */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,fmov9_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_fmov9_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+
+  {
+    DF opval = GET_H_DRC (FLD (f_dm));
+    SETMEMDF (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rn)), FLD (f_imm12x8)), opval);
+    TRACE_RESULT (current_cpu, abuf, "memory", 'f', opval);
+  }
+
   return vpc;
 #undef FLD
 }
@@ -1947,7 +1974,7 @@ if (EQSI (ANDSI (FLD (f_rm), 1), 1)) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fmul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -1955,17 +1982,17 @@ SEM_FN_NAME (sh64_compact,fmul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_fmuld (current_cpu, GET_H_DR (FLD (f_rm)), GET_H_DR (FLD (f_rn)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_fmuld (current_cpu, GET_H_FSD (FLD (f_rm)), GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fmuls (current_cpu, GET_H_FRC (FLD (f_rm)), GET_H_FRC (FLD (f_rn)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fmuls (current_cpu, GET_H_FSD (FLD (f_rm)), GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -1987,17 +2014,17 @@ SEM_FN_NAME (sh64_compact,fneg_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_fnegd (current_cpu, GET_H_DR (FLD (f_rn)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_fnegd (current_cpu, GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fnegs (current_cpu, GET_H_FRC (FLD (f_rn)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fnegs (current_cpu, GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -2061,17 +2088,17 @@ SEM_FN_NAME (sh64_compact,fsqrt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_fsqrtd (current_cpu, GET_H_DR (FLD (f_rn)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_fsqrtd (current_cpu, GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fsqrts (current_cpu, GET_H_FRC (FLD (f_rn)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fsqrts (current_cpu, GET_H_FSD (FLD (f_rn)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -2094,7 +2121,7 @@ SEM_FN_NAME (sh64_compact,fsts_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SF opval = CPU (h_fr[((UINT) 32)]);
     SET_H_FRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "frn", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "frc", 'f', opval);
   }
 
   return vpc;
@@ -2106,7 +2133,7 @@ SEM_FN_NAME (sh64_compact,fsts_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,fsub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2114,17 +2141,17 @@ SEM_FN_NAME (sh64_compact,fsub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
 if (GET_H_PRBIT ()) {
   {
-    DF opval = sh64_fsubd (current_cpu, GET_H_DR (FLD (f_rn)), GET_H_DR (FLD (f_rm)));
-    SET_H_DR (FLD (f_rn), opval);
-    written |= (1 << 8);
-    TRACE_RESULT (current_cpu, abuf, "dr-index-of--DFLT-fsdn", 'f', opval);
+    DF opval = sh64_fsubd (current_cpu, GET_H_FSD (FLD (f_rn)), GET_H_FSD (FLD (f_rm)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 } else {
   {
-    SF opval = sh64_fsubs (current_cpu, GET_H_FRC (FLD (f_rn)), GET_H_FRC (FLD (f_rm)));
-    SET_H_FRC (FLD (f_rn), opval);
-    written |= (1 << 7);
-    TRACE_RESULT (current_cpu, abuf, "fsdn", 'f', opval);
+    DF opval = sh64_fsubs (current_cpu, GET_H_FSD (FLD (f_rn)), GET_H_FSD (FLD (f_rm)));
+    SET_H_FSD (FLD (f_rn), opval);
+    written |= (1 << 3);
+    TRACE_RESULT (current_cpu, abuf, "fsd", 'f', opval);
   }
 }
 
@@ -2145,9 +2172,9 @@ SEM_FN_NAME (sh64_compact,ftrc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
   {
-    SF opval = ((GET_H_PRBIT ()) ? (sh64_ftrcdl (current_cpu, GET_H_DR (FLD (f_rn)))) : (sh64_ftrcsl (current_cpu, GET_H_FRC (FLD (f_rn)))));
+    SF opval = ((GET_H_PRBIT ()) ? (sh64_ftrcdl (current_cpu, GET_H_FSD (FLD (f_rn)))) : (sh64_ftrcsl (current_cpu, GET_H_FSD (FLD (f_rn)))));
     CPU (h_fr[((UINT) 32)]) = opval;
-    TRACE_RESULT (current_cpu, abuf, "fpul", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
   }
 
   return vpc;
@@ -2165,47 +2192,7 @@ SEM_FN_NAME (sh64_compact,ftrv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
-{
-  QI tmp_n;
-  SF tmp_res;
-  tmp_n = FLD (f_vn);
-  tmp_res = sh64_fmuls (current_cpu, GET_H_XF (((UINT) 0)), GET_H_FRC (tmp_n));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 4)), GET_H_FRC (ADDQI (tmp_n, 1))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 8)), GET_H_FRC (ADDQI (tmp_n, 2))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 12)), GET_H_FRC (ADDQI (tmp_n, 3))));
-  {
-    SF opval = tmp_res;
-    SET_H_FRC (tmp_n, opval);
-    TRACE_RESULT (current_cpu, abuf, "frc-n", 'f', opval);
-  }
-  tmp_res = sh64_fmuls (current_cpu, GET_H_XF (((UINT) 1)), GET_H_FRC (tmp_n));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 5)), GET_H_FRC (ADDQI (tmp_n, 1))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 9)), GET_H_FRC (ADDQI (tmp_n, 2))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 13)), GET_H_FRC (ADDQI (tmp_n, 3))));
-  {
-    SF opval = tmp_res;
-    SET_H_FRC (ADDQI (tmp_n, 1), opval);
-    TRACE_RESULT (current_cpu, abuf, "frc-add--DFLT-n-1", 'f', opval);
-  }
-  tmp_res = sh64_fmuls (current_cpu, GET_H_XF (((UINT) 2)), GET_H_FRC (tmp_n));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 6)), GET_H_FRC (ADDQI (tmp_n, 1))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 10)), GET_H_FRC (ADDQI (tmp_n, 2))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 14)), GET_H_FRC (ADDQI (tmp_n, 3))));
-  {
-    SF opval = tmp_res;
-    SET_H_FRC (ADDQI (tmp_n, 2), opval);
-    TRACE_RESULT (current_cpu, abuf, "frc-add--DFLT-n-2", 'f', opval);
-  }
-  tmp_res = sh64_fmuls (current_cpu, GET_H_XF (((UINT) 3)), GET_H_FRC (tmp_n));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 7)), GET_H_FRC (ADDQI (tmp_n, 1))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 11)), GET_H_FRC (ADDQI (tmp_n, 2))));
-  tmp_res = sh64_fadds (current_cpu, tmp_res, sh64_fmuls (current_cpu, GET_H_XF (((UINT) 15)), GET_H_FRC (ADDQI (tmp_n, 3))));
-  {
-    SF opval = tmp_res;
-    SET_H_FRC (ADDQI (tmp_n, 3), opval);
-    TRACE_RESULT (current_cpu, abuf, "frc-add--DFLT-n-3", 'f', opval);
-  }
-}
+sh64_ftrv (current_cpu, FLD (f_vn));
 
   return vpc;
 #undef FLD
@@ -2223,12 +2210,21 @@ SEM_FN_NAME (sh64_compact,jmp_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_BRANCH_INIT
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
 {
   {
     UDI opval = GET_H_GRC (FLD (f_rn));
     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
     TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
   }
+}
+((void) 0); /*nop*/
 }
 
   SEM_BRANCH_FINI (vpc);
@@ -2255,23 +2251,95 @@ SEM_FN_NAME (sh64_compact,jsr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
     SET_H_PR (opval);
     TRACE_RESULT (current_cpu, abuf, "pr", 'x', opval);
   }
+}
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
+{
+  {
+    UDI opval = GET_H_GRC (FLD (f_rn));
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+}
+((void) 0); /*nop*/
+}
+
+  SEM_BRANCH_FINI (vpc);
+  return vpc;
+#undef FLD
+}
+
+/* ldc-gbr-compact: ldc $rn, gbr */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,ldc_gbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = GET_H_GRC (FLD (f_rn));
+    SET_H_GBR (opval);
+    TRACE_RESULT (current_cpu, abuf, "gbr", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* ldc-vbr-compact: ldc $rn, vbr */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,ldc_vbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = GET_H_GRC (FLD (f_rn));
+    SET_H_VBR (opval);
+    TRACE_RESULT (current_cpu, abuf, "vbr", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* ldc-sr-compact: ldc $rn, sr */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,ldc_sr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
   {
-    UDI opval = GET_H_GRC (FLD (f_rn));
-    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
-    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+    SI opval = GET_H_GRC (FLD (f_rn));
+    CPU (h_sr) = opval;
+    TRACE_RESULT (current_cpu, abuf, "sr", 'x', opval);
   }
-}
-}
 
-  SEM_BRANCH_FINI (vpc);
   return vpc;
 #undef FLD
 }
 
-/* ldc-compact: ldc $rn, gbr */
+/* ldcl-gbr-compact: ldc.l @${rn}+, gbr */
 
 static SEM_PC
-SEM_FN_NAME (sh64_compact,ldc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+SEM_FN_NAME (sh64_compact,ldcl_gbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
 #define FLD(f) abuf->fields.sfmt_movw10_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2279,20 +2347,27 @@ SEM_FN_NAME (sh64_compact,ldc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
   {
-    SI opval = GET_H_GRC (FLD (f_rn));
+    SI opval = GETMEMSI (current_cpu, pc, GET_H_GRC (FLD (f_rn)));
     SET_H_GBR (opval);
     TRACE_RESULT (current_cpu, abuf, "gbr", 'x', opval);
   }
+  {
+    SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+}
 
   return vpc;
 #undef FLD
 }
 
-/* ldcl-compact: ldc.l @${rn}+, gbr */
+/* ldcl-vbr-compact: ldc.l @${rn}+, vbr */
 
 static SEM_PC
-SEM_FN_NAME (sh64_compact,ldcl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+SEM_FN_NAME (sh64_compact,ldcl_vbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
 #define FLD(f) abuf->fields.sfmt_movw10_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
@@ -2303,13 +2378,13 @@ SEM_FN_NAME (sh64_compact,ldcl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
   {
     SI opval = GETMEMSI (current_cpu, pc, GET_H_GRC (FLD (f_rn)));
-    SET_H_GBR (opval);
-    TRACE_RESULT (current_cpu, abuf, "gbr", 'x', opval);
+    SET_H_VBR (opval);
+    TRACE_RESULT (current_cpu, abuf, "vbr", 'x', opval);
   }
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2330,7 +2405,7 @@ SEM_FN_NAME (sh64_compact,lds_fpscr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
 
   {
     SI opval = GET_H_GRC (FLD (f_rn));
-    SET_H_FPCCR (opval);
+    CPU (h_fpscr) = opval;
     TRACE_RESULT (current_cpu, abuf, "fpscr", 'x', opval);
   }
 
@@ -2352,13 +2427,13 @@ SEM_FN_NAME (sh64_compact,ldsl_fpscr_compact) (SIM_CPU *current_cpu, SEM_ARG sem
 {
   {
     SI opval = GETMEMSI (current_cpu, pc, GET_H_GRC (FLD (f_rn)));
-    SET_H_FPCCR (opval);
+    CPU (h_fpscr) = opval;
     TRACE_RESULT (current_cpu, abuf, "fpscr", 'x', opval);
   }
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2380,7 +2455,7 @@ SEM_FN_NAME (sh64_compact,lds_fpul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_a
   {
     SF opval = SUBWORDSISF (GET_H_GRC (FLD (f_rn)));
     CPU (h_fr[((UINT) 32)]) = opval;
-    TRACE_RESULT (current_cpu, abuf, "fpul", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
   }
 
   return vpc;
@@ -2402,12 +2477,12 @@ SEM_FN_NAME (sh64_compact,ldsl_fpul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   {
     SF opval = GETMEMSF (current_cpu, pc, GET_H_GRC (FLD (f_rn)));
     CPU (h_fr[((UINT) 32)]) = opval;
-    TRACE_RESULT (current_cpu, abuf, "fpul", 'f', opval);
+    TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
   }
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2456,7 +2531,7 @@ SEM_FN_NAME (sh64_compact,ldsl_mach_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2505,7 +2580,7 @@ SEM_FN_NAME (sh64_compact,ldsl_macl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2554,7 +2629,7 @@ SEM_FN_NAME (sh64_compact,ldsl_pr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_ar
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2567,7 +2642,7 @@ SEM_FN_NAME (sh64_compact,ldsl_pr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_ar
 static SEM_PC
 SEM_FN_NAME (sh64_compact,macl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2583,20 +2658,20 @@ SEM_FN_NAME (sh64_compact,macl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 if (EQSI (FLD (f_rn), FLD (f_rm))) {
 {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 4);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 11);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 }
@@ -2605,7 +2680,7 @@ if (EQSI (FLD (f_rn), FLD (f_rm))) {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 4);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 11);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   tmp_tmpry = MULDI (ZEXTSIDI (tmp_x), ZEXTSIDI (tmp_y));
   tmp_mac = ORDI (SLLDI (ZEXTSIDI (GET_H_MACH ()), 32), ZEXTSIDI (GET_H_MACL ()));
@@ -2649,7 +2724,7 @@ if (LTDI (tmp_result, tmp_min)) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,macw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2665,20 +2740,20 @@ SEM_FN_NAME (sh64_compact,macw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 2);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 if (EQSI (FLD (f_rn), FLD (f_rm))) {
 {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 2);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 2);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 11);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 }
@@ -2687,7 +2762,7 @@ if (EQSI (FLD (f_rn), FLD (f_rm))) {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 2);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 11);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   tmp_tmpry = MULSI (ZEXTHISI (tmp_x), ZEXTHISI (tmp_y));
 if (GET_H_SBIT ()) {
@@ -2737,7 +2812,7 @@ if (ADDOFSI (tmp_tmpry, GET_H_MACL (), 0)) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,mov_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2746,7 +2821,7 @@ SEM_FN_NAME (sh64_compact,mov_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     DI opval = GET_H_GR (FLD (f_rm));
     SET_H_GR (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn64", 'D', opval);
+    TRACE_RESULT (current_cpu, abuf, "gr", 'D', opval);
   }
 
   return vpc;
@@ -2767,7 +2842,28 @@ SEM_FN_NAME (sh64_compact,movi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTQIDI (ANDQI (FLD (f_imm8), 255));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* movi20-compact: movi20 #$imm20, $rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,movi20_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movi20_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+
+  {
+    SI opval = FLD (f_imm20);
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -2779,7 +2875,7 @@ SEM_FN_NAME (sh64_compact,movi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movb1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2800,7 +2896,7 @@ SEM_FN_NAME (sh64_compact,movb1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movb2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2817,7 +2913,7 @@ SEM_FN_NAME (sh64_compact,movb2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2830,7 +2926,7 @@ SEM_FN_NAME (sh64_compact,movb2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movb3_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2901,7 +2997,7 @@ SEM_FN_NAME (sh64_compact,movb5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movb6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2910,7 +3006,7 @@ SEM_FN_NAME (sh64_compact,movb6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTQISI (GETMEMQI (current_cpu, pc, GET_H_GRC (FLD (f_rm))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -2922,7 +3018,7 @@ SEM_FN_NAME (sh64_compact,movb6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movb7_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2936,20 +3032,20 @@ if (EQSI (FLD (f_rm), FLD (f_rn))) {
     SI opval = EXTQISI (tmp_data);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 1);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
   {
     SI opval = EXTQISI (tmp_data);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -2963,7 +3059,7 @@ if (EQSI (FLD (f_rm), FLD (f_rn))) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movb8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -2972,7 +3068,7 @@ SEM_FN_NAME (sh64_compact,movb8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTQISI (GETMEMQI (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm)))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -2993,7 +3089,7 @@ SEM_FN_NAME (sh64_compact,movb9_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTQISI (GETMEMQI (current_cpu, pc, ADDSI (GET_H_GBR (), FLD (f_imm8))));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3014,7 +3110,7 @@ SEM_FN_NAME (sh64_compact,movb10_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = EXTQISI (GETMEMQI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rm)), FLD (f_imm4))));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3026,7 +3122,7 @@ SEM_FN_NAME (sh64_compact,movb10_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movl1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3047,7 +3143,7 @@ SEM_FN_NAME (sh64_compact,movl1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movl2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3064,7 +3160,7 @@ SEM_FN_NAME (sh64_compact,movl2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -3077,7 +3173,7 @@ SEM_FN_NAME (sh64_compact,movl2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movl3_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3140,7 +3236,7 @@ SEM_FN_NAME (sh64_compact,movl5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movl6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3149,7 +3245,7 @@ SEM_FN_NAME (sh64_compact,movl6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = GETMEMSI (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3161,7 +3257,7 @@ SEM_FN_NAME (sh64_compact,movl6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movl7_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3171,21 +3267,21 @@ SEM_FN_NAME (sh64_compact,movl7_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = GETMEMSI (current_cpu, pc, GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 if (EQSI (FLD (f_rm), FLD (f_rn))) {
   {
     SI opval = GET_H_GRC (FLD (f_rn));
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 4);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 5);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 }
@@ -3200,7 +3296,7 @@ if (EQSI (FLD (f_rm), FLD (f_rn))) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movl8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3209,7 +3305,7 @@ SEM_FN_NAME (sh64_compact,movl8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3230,7 +3326,7 @@ SEM_FN_NAME (sh64_compact,movl9_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GBR (), FLD (f_imm8x4)));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3251,7 +3347,7 @@ SEM_FN_NAME (sh64_compact,movl10_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_imm8x4), ANDDI (ADDDI (pc, 4), INVSI (3))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3272,7 +3368,49 @@ SEM_FN_NAME (sh64_compact,movl11_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rm)), FLD (f_imm4x4)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* movl12-compact: mov.l @($imm12x4, $rm), $rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,movl12_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+
+  {
+    SI opval = GETMEMSI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rm)), FLD (f_imm12x4)));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* movl13-compact: mov.l $rm, @($imm12x4, $rn) */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,movl13_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+
+  {
+    SI opval = GET_H_GRC (FLD (f_rm));
+    SETMEMSI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rn)), FLD (f_imm12x4)), opval);
+    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   }
 
   return vpc;
@@ -3284,7 +3422,7 @@ SEM_FN_NAME (sh64_compact,movl11_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3305,7 +3443,7 @@ SEM_FN_NAME (sh64_compact,movw1_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3322,7 +3460,7 @@ SEM_FN_NAME (sh64_compact,movw2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -3335,7 +3473,7 @@ SEM_FN_NAME (sh64_compact,movw2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw3_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3372,7 +3510,7 @@ SEM_FN_NAME (sh64_compact,movw4_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 #undef FLD
 }
 
-/* movw5-compact: mov.w r0, @($imm4x2, $rn) */
+/* movw5-compact: mov.w r0, @($imm4x2, $rm) */
 
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
@@ -3385,7 +3523,7 @@ SEM_FN_NAME (sh64_compact,movw5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 
   {
     HI opval = SUBWORDSIHI (GET_H_GRC (((UINT) 0)), 1);
-    SETMEMHI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rn)), FLD (f_imm4x2)), opval);
+    SETMEMHI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rm)), FLD (f_imm4x2)), opval);
     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   }
 
@@ -3398,7 +3536,7 @@ SEM_FN_NAME (sh64_compact,movw5_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3407,7 +3545,7 @@ SEM_FN_NAME (sh64_compact,movw6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTHISI (GETMEMHI (current_cpu, pc, GET_H_GRC (FLD (f_rm))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3419,7 +3557,7 @@ SEM_FN_NAME (sh64_compact,movw6_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw7_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3433,20 +3571,20 @@ if (EQSI (FLD (f_rm), FLD (f_rn))) {
     SI opval = EXTHISI (tmp_data);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
   {
     SI opval = ADDSI (GET_H_GRC (FLD (f_rm)), 2);
     SET_H_GRC (FLD (f_rm), opval);
     written |= (1 << 4);
-    TRACE_RESULT (current_cpu, abuf, "rm", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
   {
     SI opval = EXTHISI (tmp_data);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -3460,7 +3598,7 @@ if (EQSI (FLD (f_rm), FLD (f_rn))) {
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3469,7 +3607,7 @@ SEM_FN_NAME (sh64_compact,movw8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTHISI (GETMEMHI (current_cpu, pc, ADDSI (GET_H_GRC (((UINT) 0)), GET_H_GRC (FLD (f_rm)))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3490,7 +3628,7 @@ SEM_FN_NAME (sh64_compact,movw9_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = EXTHISI (GETMEMHI (current_cpu, pc, ADDSI (GET_H_GBR (), FLD (f_imm8x2))));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3511,7 +3649,7 @@ SEM_FN_NAME (sh64_compact,movw10_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = EXTHISI (GETMEMHI (current_cpu, pc, ADDDI (ADDDI (pc, 4), FLD (f_imm8x2))));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3523,7 +3661,7 @@ SEM_FN_NAME (sh64_compact,movw10_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 static SEM_PC
 SEM_FN_NAME (sh64_compact,movw11_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movw11_compact.f
+#define FLD(f) abuf->fields.sfmt_movw5_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3532,7 +3670,7 @@ SEM_FN_NAME (sh64_compact,movw11_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = EXTHISI (GETMEMHI (current_cpu, pc, ADDSI (GET_H_GRC (FLD (f_rm)), FLD (f_imm4x2))));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3553,7 +3691,7 @@ SEM_FN_NAME (sh64_compact,mova_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ADDDI (ANDDI (ADDDI (pc, 4), INVSI (3)), FLD (f_imm8x4));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3581,6 +3719,27 @@ SEM_FN_NAME (sh64_compact,movcal_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
 #undef FLD
 }
 
+/* movcol-compact: movco.l r0, @$rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,movcol_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = GET_H_GRC (FLD (f_rn));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
 /* movt-compact: movt $rn */
 
 static SEM_PC
@@ -3595,8 +3754,57 @@ SEM_FN_NAME (sh64_compact,movt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ZEXTBISI (GET_H_TBIT ());
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* movual-compact: movua.l @$rn, r0 */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,movual_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = sh64_movua (current_cpu, pc, GET_H_GRC (FLD (f_rn)));
+    SET_H_GRC (((UINT) 0), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* movual2-compact: movua.l @$rn+, r0 */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,movual2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+{
+  {
+    SI opval = sh64_movua (current_cpu, pc, GET_H_GRC (FLD (f_rn)));
+    SET_H_GRC (((UINT) 0), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+  {
+    SI opval = ADDSI (GET_H_GRC (FLD (f_rn)), 4);
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
+}
 
   return vpc;
 #undef FLD
@@ -3607,7 +3815,7 @@ SEM_FN_NAME (sh64_compact,movt_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,mull_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3628,7 +3836,7 @@ SEM_FN_NAME (sh64_compact,mull_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,mulsw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3649,7 +3857,7 @@ SEM_FN_NAME (sh64_compact,mulsw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,muluw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3670,7 +3878,7 @@ SEM_FN_NAME (sh64_compact,muluw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,neg_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3679,7 +3887,7 @@ SEM_FN_NAME (sh64_compact,neg_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = NEGSI (GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3691,7 +3899,7 @@ SEM_FN_NAME (sh64_compact,neg_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,negc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3703,7 +3911,7 @@ SEM_FN_NAME (sh64_compact,negc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SUBCSI (0, GET_H_GRC (FLD (f_rm)), GET_H_TBIT ());
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = tmp_flag;
@@ -3738,7 +3946,7 @@ SEM_FN_NAME (sh64_compact,nop_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,not_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3747,7 +3955,7 @@ SEM_FN_NAME (sh64_compact,not_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     DI opval = INVDI (GET_H_GR (FLD (f_rm)));
     SET_H_GR (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn64", 'D', opval);
+    TRACE_RESULT (current_cpu, abuf, "gr", 'D', opval);
   }
 
   return vpc;
@@ -3759,13 +3967,20 @@ SEM_FN_NAME (sh64_compact,not_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,ocbi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.fmt_empty.f
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    SI opval = GET_H_GRC (FLD (f_rn));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
 ((void) 0); /*nop*/
+}
 
   return vpc;
 #undef FLD
@@ -3776,13 +3991,20 @@ SEM_FN_NAME (sh64_compact,ocbi_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,ocbp_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.fmt_empty.f
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    SI opval = GET_H_GRC (FLD (f_rn));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
 ((void) 0); /*nop*/
+}
 
   return vpc;
 #undef FLD
@@ -3793,13 +4015,20 @@ SEM_FN_NAME (sh64_compact,ocbp_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,ocbwb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.fmt_empty.f
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    SI opval = GET_H_GRC (FLD (f_rn));
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
 ((void) 0); /*nop*/
+}
 
   return vpc;
 #undef FLD
@@ -3810,7 +4039,7 @@ SEM_FN_NAME (sh64_compact,ocbwb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,or_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -3819,7 +4048,7 @@ SEM_FN_NAME (sh64_compact,or_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     DI opval = ORDI (GET_H_GR (FLD (f_rm)), GET_H_GR (FLD (f_rn)));
     SET_H_GR (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn64", 'D', opval);
+    TRACE_RESULT (current_cpu, abuf, "gr", 'D', opval);
   }
 
   return vpc;
@@ -3840,7 +4069,7 @@ SEM_FN_NAME (sh64_compact,ori_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (GET_H_GRC (((UINT) 0)), ZEXTSIDI (FLD (f_imm8)));
     SET_H_GRC (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "r0", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -3879,13 +4108,13 @@ SEM_FN_NAME (sh64_compact,orb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,pref_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.fmt_empty.f
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
-((void) 0); /*nop*/
+sh64_pref (current_cpu, GET_H_GRC (FLD (f_rn)));
 
   return vpc;
 #undef FLD
@@ -3908,7 +4137,7 @@ SEM_FN_NAME (sh64_compact,rotcl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SLLSI (GET_H_GRC (FLD (f_rn)), 1), GET_H_TBIT ());
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_temp) ? (1) : (0));
@@ -3940,7 +4169,7 @@ SEM_FN_NAME (sh64_compact,rotcr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SRLSI (GET_H_GRC (FLD (f_rn)), 1), SLLSI (tmp_temp, 31));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_lsbit) ? (1) : (0));
@@ -3970,7 +4199,7 @@ SEM_FN_NAME (sh64_compact,rotl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SLLSI (GET_H_GRC (FLD (f_rn)), 1), tmp_temp);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_temp) ? (1) : (0));
@@ -4002,7 +4231,7 @@ SEM_FN_NAME (sh64_compact,rotr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SRLSI (GET_H_GRC (FLD (f_rn)), 1), SLLSI (tmp_temp, 31));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_lsbit) ? (1) : (0));
@@ -4027,12 +4256,21 @@ SEM_FN_NAME (sh64_compact,rts_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_BRANCH_INIT
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
+{
+  {
+    UDI opval = ADDDI (pc, 2);
+    SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
+    TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
+  }
+((void) 0); /*nop*/
 {
   {
     UDI opval = GET_H_PR ();
     SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
     TRACE_RESULT (current_cpu, abuf, "pc", 'D', opval);
   }
+}
+((void) 0); /*nop*/
 }
 
   SEM_BRANCH_FINI (vpc);
@@ -4087,44 +4325,44 @@ SEM_FN_NAME (sh64_compact,sett_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,shad_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
 {
-  QI tmp_shamt;
-  tmp_shamt = ANDQI (GET_H_GRC (FLD (f_rm)), 31);
+  SI tmp_shamt;
+  tmp_shamt = ANDSI (GET_H_GRC (FLD (f_rm)), 31);
 if (GESI (GET_H_GRC (FLD (f_rm)), 0)) {
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), tmp_shamt);
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
-if (NEQI (tmp_shamt, 0)) {
+if (NESI (tmp_shamt, 0)) {
   {
     SI opval = SRASI (GET_H_GRC (FLD (f_rn)), SUBSI (32, tmp_shamt));
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
 if (LTSI (GET_H_GRC (FLD (f_rn)), 0)) {
   {
     SI opval = NEGSI (1);
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
   {
     SI opval = 0;
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 }
@@ -4153,7 +4391,7 @@ SEM_FN_NAME (sh64_compact,shal_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), 1);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_t) ? (1) : (0));
@@ -4183,7 +4421,7 @@ SEM_FN_NAME (sh64_compact,shar_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SRASI (GET_H_GRC (FLD (f_rn)), 1);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_t) ? (1) : (0));
@@ -4201,36 +4439,36 @@ SEM_FN_NAME (sh64_compact,shar_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,shld_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
 {
-  QI tmp_shamt;
-  tmp_shamt = ANDQI (GET_H_GRC (FLD (f_rm)), 31);
+  SI tmp_shamt;
+  tmp_shamt = ANDSI (GET_H_GRC (FLD (f_rm)), 31);
 if (GESI (GET_H_GRC (FLD (f_rm)), 0)) {
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), tmp_shamt);
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
-if (NEQI (tmp_shamt, 0)) {
+if (NESI (tmp_shamt, 0)) {
   {
     SI opval = SRLSI (GET_H_GRC (FLD (f_rn)), SUBSI (32, tmp_shamt));
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 } else {
   {
     SI opval = 0;
     SET_H_GRC (FLD (f_rn), opval);
-    written |= (1 << 3);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    written |= (1 << 2);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 }
@@ -4258,7 +4496,7 @@ SEM_FN_NAME (sh64_compact,shll_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), 1);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_t) ? (1) : (0));
@@ -4285,7 +4523,7 @@ SEM_FN_NAME (sh64_compact,shll2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), 2);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4306,7 +4544,7 @@ SEM_FN_NAME (sh64_compact,shll8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), 8);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4327,7 +4565,7 @@ SEM_FN_NAME (sh64_compact,shll16_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = SLLSI (GET_H_GRC (FLD (f_rn)), 16);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4351,7 +4589,7 @@ SEM_FN_NAME (sh64_compact,shlr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SRLSI (GET_H_GRC (FLD (f_rn)), 1);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_t) ? (1) : (0));
@@ -4378,7 +4616,7 @@ SEM_FN_NAME (sh64_compact,shlr2_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SRLSI (GET_H_GRC (FLD (f_rn)), 2);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4399,7 +4637,7 @@ SEM_FN_NAME (sh64_compact,shlr8_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SRLSI (GET_H_GRC (FLD (f_rn)), 8);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4420,7 +4658,7 @@ SEM_FN_NAME (sh64_compact,shlr16_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = SRLSI (GET_H_GRC (FLD (f_rn)), 16);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4441,7 +4679,28 @@ SEM_FN_NAME (sh64_compact,stc_gbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_ar
   {
     SI opval = GET_H_GBR ();
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+
+  return vpc;
+#undef FLD
+}
+
+/* stc-vbr-compact: stc vbr, $rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,stc_vbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+  {
+    SI opval = GET_H_VBR ();
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4470,7 +4729,37 @@ SEM_FN_NAME (sh64_compact,stcl_gbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_a
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
+  }
+}
+
+  return vpc;
+#undef FLD
+}
+
+/* stcl-vbr-compact: stc.l vbr, @-$rn */
+
+static SEM_PC
+SEM_FN_NAME (sh64_compact,stcl_vbr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_movw10_compact.f
+  ARGBUF *abuf = SEM_ARGBUF (sem_arg);
+  int UNUSED written = 0;
+  IADDR UNUSED pc = abuf->addr;
+  SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
+
+{
+  DI tmp_addr;
+  tmp_addr = SUBSI (GET_H_GRC (FLD (f_rn)), 4);
+  {
+    SI opval = GET_H_VBR ();
+    SETMEMSI (current_cpu, pc, tmp_addr, opval);
+    TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
+  }
+  {
+    SI opval = tmp_addr;
+    SET_H_GRC (FLD (f_rn), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4490,9 +4779,9 @@ SEM_FN_NAME (sh64_compact,sts_fpscr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
   {
-    SI opval = GET_H_FPCCR ();
+    SI opval = CPU (h_fpscr);
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4514,14 +4803,14 @@ SEM_FN_NAME (sh64_compact,stsl_fpscr_compact) (SIM_CPU *current_cpu, SEM_ARG sem
   DI tmp_addr;
   tmp_addr = SUBSI (GET_H_GRC (FLD (f_rn)), 4);
   {
-    SI opval = GET_H_FPCCR ();
+    SI opval = CPU (h_fpscr);
     SETMEMSI (current_cpu, pc, tmp_addr, opval);
     TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
   }
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4543,7 +4832,7 @@ SEM_FN_NAME (sh64_compact,sts_fpul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_a
   {
     SI opval = SUBWORDSFSI (CPU (h_fr[((UINT) 32)]));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4572,7 +4861,7 @@ SEM_FN_NAME (sh64_compact,stsl_fpul_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4594,7 +4883,7 @@ SEM_FN_NAME (sh64_compact,sts_mach_compact) (SIM_CPU *current_cpu, SEM_ARG sem_a
   {
     SI opval = GET_H_MACH ();
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4623,7 +4912,7 @@ SEM_FN_NAME (sh64_compact,stsl_mach_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4645,7 +4934,7 @@ SEM_FN_NAME (sh64_compact,sts_macl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_a
   {
     SI opval = GET_H_MACL ();
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4674,7 +4963,7 @@ SEM_FN_NAME (sh64_compact,stsl_macl_compact) (SIM_CPU *current_cpu, SEM_ARG sem_
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4696,7 +4985,7 @@ SEM_FN_NAME (sh64_compact,sts_pr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg
   {
     SI opval = GET_H_PR ();
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4725,7 +5014,7 @@ SEM_FN_NAME (sh64_compact,stsl_pr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_ar
   {
     SI opval = tmp_addr;
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4738,7 +5027,7 @@ SEM_FN_NAME (sh64_compact,stsl_pr_compact) (SIM_CPU *current_cpu, SEM_ARG sem_ar
 static SEM_PC
 SEM_FN_NAME (sh64_compact,sub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4747,7 +5036,7 @@ SEM_FN_NAME (sh64_compact,sub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4759,7 +5048,7 @@ SEM_FN_NAME (sh64_compact,sub_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,subc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4771,7 +5060,7 @@ SEM_FN_NAME (sh64_compact,subc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SUBCSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)), GET_H_TBIT ());
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = tmp_flag;
@@ -4789,7 +5078,7 @@ SEM_FN_NAME (sh64_compact,subc_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,subv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4801,7 +5090,7 @@ SEM_FN_NAME (sh64_compact,subv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = SUBSI (GET_H_GRC (FLD (f_rn)), GET_H_GRC (FLD (f_rm)));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
   {
     BI opval = ((tmp_t) ? (1) : (0));
@@ -4819,7 +5108,7 @@ SEM_FN_NAME (sh64_compact,subv_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,swapb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4835,7 +5124,7 @@ SEM_FN_NAME (sh64_compact,swapb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SLLSI (tmp_top_half, 16), ORSI (SLLSI (tmp_byte0, 8), tmp_byte1));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 }
 
@@ -4848,7 +5137,7 @@ SEM_FN_NAME (sh64_compact,swapb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,swapw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4857,7 +5146,7 @@ SEM_FN_NAME (sh64_compact,swapw_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SRLSI (GET_H_GRC (FLD (f_rm)), 16), SLLSI (GET_H_GRC (FLD (f_rm)), 16));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -4917,7 +5206,7 @@ sh64_compact_trapa (current_cpu, FLD (f_imm8), pc);
 static SEM_PC
 SEM_FN_NAME (sh64_compact,tst_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4984,7 +5273,7 @@ SEM_FN_NAME (sh64_compact,tstb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,xor_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -4993,7 +5282,7 @@ SEM_FN_NAME (sh64_compact,xor_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     DI opval = XORDI (GET_H_GR (FLD (f_rn)), GET_H_GR (FLD (f_rm)));
     SET_H_GR (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn64", 'D', opval);
+    TRACE_RESULT (current_cpu, abuf, "gr", 'D', opval);
   }
 
   return vpc;
@@ -5012,9 +5301,9 @@ SEM_FN_NAME (sh64_compact,xori_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
 
   {
-    DI opval = XORDI (GET_H_GR (((UINT) 0)), ZEXTSIDI (FLD (f_imm8)));
-    SET_H_GR (((UINT) 0), opval);
-    TRACE_RESULT (current_cpu, abuf, "gr-0", 'D', opval);
+    SI opval = XORSI (GET_H_GRC (((UINT) 0)), ZEXTSIDI (FLD (f_imm8)));
+    SET_H_GRC (((UINT) 0), opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -5053,7 +5342,7 @@ SEM_FN_NAME (sh64_compact,xorb_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 static SEM_PC
 SEM_FN_NAME (sh64_compact,xtrct_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
 {
-#define FLD(f) abuf->fields.sfmt_movl5_compact.f
+#define FLD(f) abuf->fields.sfmt_movl12_compact.f
   ARGBUF *abuf = SEM_ARGBUF (sem_arg);
   int UNUSED written = 0;
   IADDR UNUSED pc = abuf->addr;
@@ -5062,7 +5351,7 @@ SEM_FN_NAME (sh64_compact,xtrct_compact) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
   {
     SI opval = ORSI (SLLSI (GET_H_GRC (FLD (f_rm)), 16), SRLSI (GET_H_GRC (FLD (f_rn)), 16));
     SET_H_GRC (FLD (f_rn), opval);
-    TRACE_RESULT (current_cpu, abuf, "rn", 'x', opval);
+    TRACE_RESULT (current_cpu, abuf, "grc", 'x', opval);
   }
 
   return vpc;
@@ -5109,6 +5398,8 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_DIV0S_COMPACT, SEM_FN_NAME (sh64_compact,div0s_compact) },
   { SH64_COMPACT_INSN_DIV0U_COMPACT, SEM_FN_NAME (sh64_compact,div0u_compact) },
   { SH64_COMPACT_INSN_DIV1_COMPACT, SEM_FN_NAME (sh64_compact,div1_compact) },
+  { SH64_COMPACT_INSN_DIVU_COMPACT, SEM_FN_NAME (sh64_compact,divu_compact) },
+  { SH64_COMPACT_INSN_MULR_COMPACT, SEM_FN_NAME (sh64_compact,mulr_compact) },
   { SH64_COMPACT_INSN_DMULSL_COMPACT, SEM_FN_NAME (sh64_compact,dmulsl_compact) },
   { SH64_COMPACT_INSN_DMULUL_COMPACT, SEM_FN_NAME (sh64_compact,dmulul_compact) },
   { SH64_COMPACT_INSN_DT_COMPACT, SEM_FN_NAME (sh64_compact,dt_compact) },
@@ -5136,6 +5427,8 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_FMOV5_COMPACT, SEM_FN_NAME (sh64_compact,fmov5_compact) },
   { SH64_COMPACT_INSN_FMOV6_COMPACT, SEM_FN_NAME (sh64_compact,fmov6_compact) },
   { SH64_COMPACT_INSN_FMOV7_COMPACT, SEM_FN_NAME (sh64_compact,fmov7_compact) },
+  { SH64_COMPACT_INSN_FMOV8_COMPACT, SEM_FN_NAME (sh64_compact,fmov8_compact) },
+  { SH64_COMPACT_INSN_FMOV9_COMPACT, SEM_FN_NAME (sh64_compact,fmov9_compact) },
   { SH64_COMPACT_INSN_FMUL_COMPACT, SEM_FN_NAME (sh64_compact,fmul_compact) },
   { SH64_COMPACT_INSN_FNEG_COMPACT, SEM_FN_NAME (sh64_compact,fneg_compact) },
   { SH64_COMPACT_INSN_FRCHG_COMPACT, SEM_FN_NAME (sh64_compact,frchg_compact) },
@@ -5147,8 +5440,11 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_FTRV_COMPACT, SEM_FN_NAME (sh64_compact,ftrv_compact) },
   { SH64_COMPACT_INSN_JMP_COMPACT, SEM_FN_NAME (sh64_compact,jmp_compact) },
   { SH64_COMPACT_INSN_JSR_COMPACT, SEM_FN_NAME (sh64_compact,jsr_compact) },
-  { SH64_COMPACT_INSN_LDC_COMPACT, SEM_FN_NAME (sh64_compact,ldc_compact) },
-  { SH64_COMPACT_INSN_LDCL_COMPACT, SEM_FN_NAME (sh64_compact,ldcl_compact) },
+  { SH64_COMPACT_INSN_LDC_GBR_COMPACT, SEM_FN_NAME (sh64_compact,ldc_gbr_compact) },
+  { SH64_COMPACT_INSN_LDC_VBR_COMPACT, SEM_FN_NAME (sh64_compact,ldc_vbr_compact) },
+  { SH64_COMPACT_INSN_LDC_SR_COMPACT, SEM_FN_NAME (sh64_compact,ldc_sr_compact) },
+  { SH64_COMPACT_INSN_LDCL_GBR_COMPACT, SEM_FN_NAME (sh64_compact,ldcl_gbr_compact) },
+  { SH64_COMPACT_INSN_LDCL_VBR_COMPACT, SEM_FN_NAME (sh64_compact,ldcl_vbr_compact) },
   { SH64_COMPACT_INSN_LDS_FPSCR_COMPACT, SEM_FN_NAME (sh64_compact,lds_fpscr_compact) },
   { SH64_COMPACT_INSN_LDSL_FPSCR_COMPACT, SEM_FN_NAME (sh64_compact,ldsl_fpscr_compact) },
   { SH64_COMPACT_INSN_LDS_FPUL_COMPACT, SEM_FN_NAME (sh64_compact,lds_fpul_compact) },
@@ -5163,6 +5459,7 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_MACW_COMPACT, SEM_FN_NAME (sh64_compact,macw_compact) },
   { SH64_COMPACT_INSN_MOV_COMPACT, SEM_FN_NAME (sh64_compact,mov_compact) },
   { SH64_COMPACT_INSN_MOVI_COMPACT, SEM_FN_NAME (sh64_compact,movi_compact) },
+  { SH64_COMPACT_INSN_MOVI20_COMPACT, SEM_FN_NAME (sh64_compact,movi20_compact) },
   { SH64_COMPACT_INSN_MOVB1_COMPACT, SEM_FN_NAME (sh64_compact,movb1_compact) },
   { SH64_COMPACT_INSN_MOVB2_COMPACT, SEM_FN_NAME (sh64_compact,movb2_compact) },
   { SH64_COMPACT_INSN_MOVB3_COMPACT, SEM_FN_NAME (sh64_compact,movb3_compact) },
@@ -5184,6 +5481,8 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_MOVL9_COMPACT, SEM_FN_NAME (sh64_compact,movl9_compact) },
   { SH64_COMPACT_INSN_MOVL10_COMPACT, SEM_FN_NAME (sh64_compact,movl10_compact) },
   { SH64_COMPACT_INSN_MOVL11_COMPACT, SEM_FN_NAME (sh64_compact,movl11_compact) },
+  { SH64_COMPACT_INSN_MOVL12_COMPACT, SEM_FN_NAME (sh64_compact,movl12_compact) },
+  { SH64_COMPACT_INSN_MOVL13_COMPACT, SEM_FN_NAME (sh64_compact,movl13_compact) },
   { SH64_COMPACT_INSN_MOVW1_COMPACT, SEM_FN_NAME (sh64_compact,movw1_compact) },
   { SH64_COMPACT_INSN_MOVW2_COMPACT, SEM_FN_NAME (sh64_compact,movw2_compact) },
   { SH64_COMPACT_INSN_MOVW3_COMPACT, SEM_FN_NAME (sh64_compact,movw3_compact) },
@@ -5197,7 +5496,10 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_MOVW11_COMPACT, SEM_FN_NAME (sh64_compact,movw11_compact) },
   { SH64_COMPACT_INSN_MOVA_COMPACT, SEM_FN_NAME (sh64_compact,mova_compact) },
   { SH64_COMPACT_INSN_MOVCAL_COMPACT, SEM_FN_NAME (sh64_compact,movcal_compact) },
+  { SH64_COMPACT_INSN_MOVCOL_COMPACT, SEM_FN_NAME (sh64_compact,movcol_compact) },
   { SH64_COMPACT_INSN_MOVT_COMPACT, SEM_FN_NAME (sh64_compact,movt_compact) },
+  { SH64_COMPACT_INSN_MOVUAL_COMPACT, SEM_FN_NAME (sh64_compact,movual_compact) },
+  { SH64_COMPACT_INSN_MOVUAL2_COMPACT, SEM_FN_NAME (sh64_compact,movual2_compact) },
   { SH64_COMPACT_INSN_MULL_COMPACT, SEM_FN_NAME (sh64_compact,mull_compact) },
   { SH64_COMPACT_INSN_MULSW_COMPACT, SEM_FN_NAME (sh64_compact,mulsw_compact) },
   { SH64_COMPACT_INSN_MULUW_COMPACT, SEM_FN_NAME (sh64_compact,muluw_compact) },
@@ -5232,7 +5534,9 @@ static const struct sem_fn_desc sem_fns[] = {
   { SH64_COMPACT_INSN_SHLR8_COMPACT, SEM_FN_NAME (sh64_compact,shlr8_compact) },
   { SH64_COMPACT_INSN_SHLR16_COMPACT, SEM_FN_NAME (sh64_compact,shlr16_compact) },
   { SH64_COMPACT_INSN_STC_GBR_COMPACT, SEM_FN_NAME (sh64_compact,stc_gbr_compact) },
+  { SH64_COMPACT_INSN_STC_VBR_COMPACT, SEM_FN_NAME (sh64_compact,stc_vbr_compact) },
   { SH64_COMPACT_INSN_STCL_GBR_COMPACT, SEM_FN_NAME (sh64_compact,stcl_gbr_compact) },
+  { SH64_COMPACT_INSN_STCL_VBR_COMPACT, SEM_FN_NAME (sh64_compact,stcl_vbr_compact) },
   { SH64_COMPACT_INSN_STS_FPSCR_COMPACT, SEM_FN_NAME (sh64_compact,sts_fpscr_compact) },
   { SH64_COMPACT_INSN_STSL_FPSCR_COMPACT, SEM_FN_NAME (sh64_compact,stsl_fpscr_compact) },
   { SH64_COMPACT_INSN_STS_FPUL_COMPACT, SEM_FN_NAME (sh64_compact,sts_fpul_compact) },
This page took 0.070158 seconds and 4 git commands to generate.