summaryrefslogtreecommitdiff
path: root/sim/frv/sem.c
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2003-10-08 18:19:33 +0000
committerDave Brolley <brolley@redhat.com>2003-10-08 18:19:33 +0000
commite930b1f54ff2768c5818eb0a450b1d98d46d273d (patch)
treebeff79b0fd16e78faffe78489d34d064d5618b43 /sim/frv/sem.c
parent7c3f9ad027b9ec2906f3367ca7be18e5fb8f6893 (diff)
downloadbinutils-e930b1f54ff2768c5818eb0a450b1d98d46d273d.tar.gz
binutils-e930b1f54ff2768c5818eb0a450b1d98d46d273d.tar.bz2
binutils-e930b1f54ff2768c5818eb0a450b1d98d46d273d.zip
2003-10-06 Dave Brolley <brolley@redhat.com>
* profile-fr550.[ch]: New files. * configure.in: Move frv handling to alphabetically correct placement. * Makefile.in: Add fr550 support. * frv-sim.h,frv.c,interrups.c,memory.c,mloop.in,pipeline.c, profile.[ch],registers.c,traps.c: Add fr550 support. * arch.c,arch.h,cpu.c,cpu.h,cpuall.h,model.h,decode.c,decode.h,sem.c: Regenerate.
Diffstat (limited to 'sim/frv/sem.c')
-rw-r--r--sim/frv/sem.c335
1 files changed, 304 insertions, 31 deletions
diff --git a/sim/frv/sem.c b/sim/frv/sem.c
index f6356c35028..f403a506c89 100644
--- a/sim/frv/sem.c
+++ b/sim/frv/sem.c
@@ -311,7 +311,7 @@ SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
static SEM_PC
SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
{
-#define FLD(f) abuf->fields.sfmt_addcc.f
+#define FLD(f) abuf->fields.sfmt_scutss.f
ARGBUF *abuf = SEM_ARGBUF (sem_arg);
int UNUSED written = 0;
IADDR UNUSED pc = abuf->addr;
@@ -449,6 +449,69 @@ SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
+/* smu: smu$pack $GRi,$GRj */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_smass.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);
+
+ {
+ DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
+ sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
+ TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
+ }
+
+ return vpc;
+#undef FLD
+}
+
+/* smass: smass$pack $GRi,$GRj */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_smass.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);
+
+ {
+ DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
+ sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
+ TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
+ }
+
+ return vpc;
+#undef FLD
+}
+
+/* smsss: smsss$pack $GRi,$GRj */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_smass.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);
+
+ {
+ DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (9223372036854775807, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (9223372036854775808, MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
+ sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
+ TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
+ }
+
+ return vpc;
+#undef FLD
+}
+
/* sll: sll$pack $GRi,$GRj,$GRk */
static SEM_PC
@@ -512,6 +575,48 @@ SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
#undef FLD
}
+/* slass: slass$pack $GRi,$GRj,$GRk */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_addcc.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 = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
+ sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
+ TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
+ }
+
+ return vpc;
+#undef FLD
+}
+
+/* scutss: scutss$pack $GRj,$GRk */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_scutss.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 = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
+ sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
+ TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
+ }
+
+ return vpc;
+#undef FLD
+}
+
/* scan: scan$pack $GRi,$GRj,$GRk */
static SEM_PC
@@ -1949,6 +2054,66 @@ if (LTSI (tmp_tmp, 0)) {
#undef FLD
}
+/* addss: addss$pack $GRi,$GRj,$GRk */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_addcc.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 = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
+ sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
+ TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
+ }
+if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
+ {
+ SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
+ sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
+ TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
+ }
+}
+}
+
+ return vpc;
+#undef FLD
+}
+
+/* subss: subss$pack $GRi,$GRj,$GRk */
+
+static SEM_PC
+SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
+{
+#define FLD(f) abuf->fields.sfmt_addcc.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 = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
+ sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
+ TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
+ }
+if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
+ {
+ SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
+ sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
+ TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
+ }
+}
+}
+
+ return vpc;
+#undef FLD
+}
+
/* addi: addi$pack $GRi,$s12,$GRk */
static SEM_PC
@@ -7515,6 +7680,7 @@ SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
SI tmp_address;
tmp_tmp = GET_H_GR (FLD (f_GRk));
tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
+frvbf_check_swap_address (current_cpu, tmp_address);
{
SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
@@ -7543,6 +7709,7 @@ SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
SI tmp_address;
tmp_tmp = GET_H_GR (FLD (f_GRk));
tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
+frvbf_check_swap_address (current_cpu, tmp_address);
{
SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
@@ -7572,6 +7739,7 @@ if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
SI tmp_address;
tmp_tmp = GET_H_GR (FLD (f_GRk));
tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
+frvbf_check_swap_address (current_cpu, tmp_address);
{
SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
@@ -22679,6 +22847,8 @@ SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -22690,7 +22860,7 @@ if (GTDI (tmp_tmp, 549755813887)) {
{
DI opval = 549755813887;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 3);
+ written |= (1 << 4);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -22701,7 +22871,7 @@ if (LTDI (tmp_tmp, INVDI (549755813887))) {
{
DI opval = INVDI (549755813887);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 3);
+ written |= (1 << 4);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -22710,13 +22880,15 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 3);
+ written |= (1 << 4);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
}
}
}
+}
+}
abuf->written = written;
return vpc;
@@ -22734,6 +22906,8 @@ SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -22745,7 +22919,7 @@ if (GTDI (tmp_tmp, 549755813887)) {
{
DI opval = 549755813887;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 3);
+ written |= (1 << 4);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -22756,7 +22930,7 @@ if (LTDI (tmp_tmp, INVDI (549755813887))) {
{
DI opval = INVDI (549755813887);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 3);
+ written |= (1 << 4);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -22765,13 +22939,15 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 3);
+ written |= (1 << 4);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
}
}
}
+}
+}
abuf->written = written;
return vpc;
@@ -22789,6 +22965,8 @@ SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -22867,6 +23045,8 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
+}
abuf->written = written;
return vpc;
@@ -22884,6 +23064,8 @@ SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -22962,6 +23144,8 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
+}
abuf->written = written;
return vpc;
@@ -22979,6 +23163,8 @@ SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23057,6 +23243,8 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
+}
abuf->written = written;
return vpc;
@@ -23074,6 +23262,8 @@ SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23220,6 +23410,8 @@ frvbf_media_overflow (current_cpu, 1);
}
}
}
+}
+}
abuf->written = written;
return vpc;
@@ -23237,6 +23429,7 @@ SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23265,6 +23458,7 @@ frvbf_media_acc_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23282,6 +23476,7 @@ SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23310,6 +23505,7 @@ frvbf_media_acc_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23327,6 +23523,7 @@ SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23355,6 +23552,7 @@ frvbf_media_acc_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23372,6 +23570,7 @@ SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23400,6 +23599,7 @@ frvbf_media_acc_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23417,6 +23617,7 @@ SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23447,6 +23648,7 @@ if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23464,6 +23666,7 @@ SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23494,6 +23697,7 @@ if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23511,6 +23715,7 @@ SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23561,6 +23766,7 @@ frvbf_media_register_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23578,6 +23784,7 @@ SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23628,6 +23835,7 @@ frvbf_media_register_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23645,6 +23853,7 @@ SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23695,6 +23904,7 @@ frvbf_media_register_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23712,6 +23922,7 @@ SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23762,6 +23973,7 @@ frvbf_media_register_not_aligned (current_cpu);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23779,6 +23991,7 @@ SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23831,6 +24044,7 @@ if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23848,6 +24062,7 @@ SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -23900,6 +24115,7 @@ if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
}
}
}
+}
abuf->written = written;
return vpc;
@@ -23917,6 +24133,7 @@ SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24001,6 +24218,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24018,6 +24236,7 @@ SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24102,6 +24321,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24119,6 +24339,7 @@ SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24203,6 +24424,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24220,6 +24442,7 @@ SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24304,6 +24527,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24321,6 +24545,7 @@ SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24407,6 +24632,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24424,6 +24650,7 @@ SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24510,6 +24737,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24527,6 +24755,7 @@ SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24689,6 +24918,7 @@ frvbf_media_overflow (current_cpu, 1);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24706,6 +24936,7 @@ SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -24868,6 +25099,7 @@ frvbf_media_overflow (current_cpu, 1);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -24885,6 +25117,7 @@ SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -25049,6 +25282,7 @@ frvbf_media_overflow (current_cpu, 1);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25066,6 +25300,7 @@ SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -25230,6 +25465,7 @@ frvbf_media_overflow (current_cpu, 1);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25247,6 +25483,7 @@ SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -25409,6 +25646,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25426,6 +25664,7 @@ SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -25588,6 +25827,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25605,6 +25845,7 @@ SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -25767,6 +26008,7 @@ frvbf_media_overflow (current_cpu, 1);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25784,6 +26026,7 @@ SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
HI tmp_argihi;
HI tmp_argilo;
@@ -25806,7 +26049,7 @@ if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
{
DI opval = MAKEDI (127, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -25817,7 +26060,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
{
DI opval = MAKEDI (0xffffff80, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -25826,13 +26069,14 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25850,6 +26094,7 @@ SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
UHI tmp_argihi;
UHI tmp_argilo;
@@ -25872,7 +26117,7 @@ if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
{
DI opval = MAKEDI (255, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -25883,7 +26128,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
{
DI opval = MAKEDI (0, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -25892,13 +26137,14 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25916,6 +26162,7 @@ SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
HI tmp_argihi;
HI tmp_argilo;
@@ -25938,7 +26185,7 @@ if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
{
DI opval = MAKEDI (127, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -25949,7 +26196,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
{
DI opval = MAKEDI (0xffffff80, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -25958,13 +26205,14 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
}
}
}
+}
abuf->written = written;
return vpc;
@@ -25982,6 +26230,7 @@ SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
UHI tmp_argihi;
UHI tmp_argilo;
@@ -26004,7 +26253,7 @@ if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
{
DI opval = MAKEDI (255, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26015,7 +26264,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
{
DI opval = MAKEDI (0, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26024,13 +26273,14 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 8);
+ written |= (1 << 9);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26049,6 +26299,7 @@ SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
HI tmp_argihi;
HI tmp_argilo;
@@ -26071,7 +26322,7 @@ if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
{
DI opval = MAKEDI (127, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26082,7 +26333,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
{
DI opval = MAKEDI (0xffffff80, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26091,7 +26342,7 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
@@ -26099,6 +26350,7 @@ frvbf_media_overflow (current_cpu, 8);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26117,6 +26369,7 @@ SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
UHI tmp_argihi;
UHI tmp_argilo;
@@ -26139,7 +26392,7 @@ if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
{
DI opval = MAKEDI (255, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26150,7 +26403,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
{
DI opval = MAKEDI (0, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26159,7 +26412,7 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
@@ -26167,6 +26420,7 @@ frvbf_media_overflow (current_cpu, 8);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26185,6 +26439,7 @@ SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
HI tmp_argihi;
HI tmp_argilo;
@@ -26207,7 +26462,7 @@ if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
{
DI opval = MAKEDI (127, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26218,7 +26473,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
{
DI opval = MAKEDI (0xffffff80, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26227,7 +26482,7 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
@@ -26235,6 +26490,7 @@ frvbf_media_overflow (current_cpu, 8);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26253,6 +26509,7 @@ SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
{
UHI tmp_argihi;
UHI tmp_argilo;
@@ -26275,7 +26532,7 @@ if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
{
DI opval = MAKEDI (255, 0xffffffff);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26286,7 +26543,7 @@ if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
{
DI opval = MAKEDI (0, 0);
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
frvbf_media_overflow (current_cpu, 8);
@@ -26295,7 +26552,7 @@ frvbf_media_overflow (current_cpu, 8);
{
DI opval = tmp_tmp1;
sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
- written |= (1 << 10);
+ written |= (1 << 11);
TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
}
}
@@ -26303,6 +26560,7 @@ frvbf_media_overflow (current_cpu, 8);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26320,6 +26578,7 @@ SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -26420,6 +26679,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26437,6 +26697,7 @@ SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -26537,6 +26798,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26554,6 +26816,7 @@ SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -26654,6 +26917,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -26671,6 +26935,7 @@ SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
IADDR UNUSED pc = abuf->addr;
SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
+if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
frvbf_media_acc_not_aligned (current_cpu);
} else {
@@ -26771,6 +27036,7 @@ frvbf_media_overflow (current_cpu, 4);
}
}
}
+}
abuf->written = written;
return vpc;
@@ -27833,9 +28099,14 @@ static const struct sem_fn_desc sem_fns[] = {
{ FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
{ FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
{ FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
+ { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
+ { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
+ { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
{ FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
{ FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
{ FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
+ { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
+ { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
{ FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
{ FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
{ FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
@@ -27873,6 +28144,8 @@ static const struct sem_fn_desc sem_fns[] = {
{ FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
{ FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
{ FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
+ { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
+ { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
{ FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
{ FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
{ FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },