📄 sem.c
字号:
if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ BI tmp_tmp; QI tmp_cc; SI tmp_result; tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]); tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) { tmp_cc = ANDQI (tmp_cc, 13);} else { tmp_cc = ORQI (tmp_cc, 2);} tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) { tmp_cc = ANDQI (tmp_cc, 14);} else { tmp_cc = ORQI (tmp_cc, 1);} tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));if (EQSI (tmp_result, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_result, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else { tmp_cc = ANDQI (tmp_cc, 3);}} { SI opval = tmp_result; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}} abuf->written = written; return vpc;#undef FLD}/* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ BI tmp_tmp; QI tmp_cc; SI tmp_result; tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]); tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) { tmp_cc = ANDQI (tmp_cc, 13);} else { tmp_cc = ORQI (tmp_cc, 2);} tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);if (EQBI (tmp_tmp, 0)) { tmp_cc = ANDQI (tmp_cc, 14);} else { tmp_cc = ORQI (tmp_cc, 1);} tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));if (EQSI (tmp_result, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_result, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else { tmp_cc = ANDQI (tmp_cc, 3);}} { SI opval = tmp_result; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}} abuf->written = written; return vpc;#undef FLD}/* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_csmulcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ DI tmp_tmp; QI tmp_cc; tmp_cc = CPU (h_iccr[((FLD (f_CCi)) & (3))]); tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));if (EQDI (SRLDI (tmp_tmp, 63), 0)) { tmp_cc = ANDQI (tmp_cc, 7);} else { tmp_cc = ORQI (tmp_cc, 8);}if (EQBI (EQDI (tmp_tmp, 0), 0)) { tmp_cc = ANDQI (tmp_cc, 11);} else { tmp_cc = ORQI (tmp_cc, 4);} { DI opval = tmp_tmp; sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval); } { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}} abuf->written = written; return vpc;#undef FLD}/* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ SI tmp_tmp; tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))); { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); }if (EQSI (tmp_tmp, 0)) { { UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} else {if (LTSI (tmp_tmp, 0)) { { UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} else { { UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}}}} abuf->written = written; return vpc;#undef FLD}/* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ SI tmp_tmp; tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))); { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); }if (EQSI (tmp_tmp, 0)) { { UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} else {if (LTSI (tmp_tmp, 0)) { { UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} else { { UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}}}} abuf->written = written; return vpc;#undef FLD}/* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ SI tmp_tmp; tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))); { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); }if (EQSI (tmp_tmp, 0)) { { UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 7), 4); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} else {if (LTSI (tmp_tmp, 0)) { { UQI opval = ORQI (ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 11), 8); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} else { { UQI opval = ANDQI (CPU (h_iccr[((FLD (f_CCi)) & (3))]), 3); sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}}}} abuf->written = written; return vpc;#undef FLD}/* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ SI tmp_shift; SI tmp_tmp; QI tmp_cc; tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31); tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))])); tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift); { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); }if (EQSI (tmp_tmp, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_tmp, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else { tmp_cc = ANDQI (tmp_cc, 3);}} { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}} abuf->written = written; return vpc;#undef FLD}/* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ SI tmp_shift; SI tmp_tmp; QI tmp_cc; tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31); tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))])); tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift); { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); }if (EQSI (tmp_tmp, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_tmp, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else { tmp_cc = ANDQI (tmp_cc, 3);}} { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}} abuf->written = written; return vpc;#undef FLD}/* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */static SEM_PCSEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_caddcc.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);if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {{ SI tmp_shift; SI tmp_tmp; QI tmp_cc; tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31); tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[((FLD (f_CCi)) & (3))])); tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift); { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); written |= (1 << 6); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); }if (EQSI (tmp_tmp, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);} else {if (LTSI (tmp_tmp, 0)) { tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);} else { tmp_cc = ANDQI (tmp_cc, 3);}} { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[((FLD (f_CCi)) & (3))]), opval); written |= (1 << 7); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }}} abuf->written = written; return vpc;#undef FLD}/* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,addx) (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 = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1))); 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}/* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_addcc.f ARGBUF *abuf = SEM_ARGBUF (sem_arg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -