📄 sem.c
字号:
int UNUSED written = 0; IADDR UNUSED pc = abuf->addr; SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4); { SI opval = SUBCSI (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}/* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,addxcc) (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 tmp_tmp; QI tmp_cc; tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]); tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));if (EQSI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) { tmp_cc = ANDQI (tmp_cc, 13);} else { tmp_cc = ORQI (tmp_cc, 2);}if (EQSI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) { tmp_cc = ANDQI (tmp_cc, 14);} else { tmp_cc = ORQI (tmp_cc, 1);}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);}} { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} return vpc;#undef FLD}/* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */static SEM_PCSEM_FN_NAME (frvbf,subxcc) (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 tmp_tmp; QI tmp_cc; tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]); tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));if (EQSI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) { tmp_cc = ANDQI (tmp_cc, 13);} else { tmp_cc = ORQI (tmp_cc, 2);}if (EQSI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) { tmp_cc = ANDQI (tmp_cc, 14);} else { tmp_cc = ORQI (tmp_cc, 1);}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);}} { SI opval = tmp_tmp; sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval); TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval); } { UQI opval = tmp_cc; sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval); TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval); }} return vpc;#undef FLD}/* addss: addss$pack $GRi,$GRj,$GRk */static SEM_PCSEM_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_PCSEM_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_PCSEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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)), FLD (f_d12)); 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}/* subi: subi$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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)), FLD (f_d12)); 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}/* andi: andi$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)); 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}/* ori: ori$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)); 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}/* xori: xori$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)); 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}/* sdivi: sdivi$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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);{frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);; /*clobber*/} return vpc;#undef FLD}/* nsdivi: nsdivi$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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);{frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);; /*clobber*/} return vpc;#undef FLD}/* udivi: udivi$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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);{frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);; /*clobber*/} return vpc;#undef FLD}/* nudivi: nudivi$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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);{frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);; /*clobber*/} return vpc;#undef FLD}/* smuli: smuli$pack $GRi,$s12,$GRdoublek */static SEM_PCSEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_smuli.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 (FLD (f_d12))); sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval); TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval); } return vpc;#undef FLD}/* umuli: umuli$pack $GRi,$s12,$GRdoublek */static SEM_PCSEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_smuli.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 (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12))); sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval); TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval); } return vpc;#undef FLD}/* slli: slli$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31)); 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}/* srli: srli$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31)); 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}/* srai: srai$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31)); 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}/* scani: scani$pack $GRi,$s12,$GRk */static SEM_PCSEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg){#define FLD(f) abuf->fields.sfmt_swapi.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 tmp_tmp1; SI tmp_tmp2; tmp_tmp1 = GET_H_GR (FLD (f_GRi)); tmp_tmp2 = SRASI (FLD (f_d12), 1); { SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2)); sim_queue_fn_si_write (current_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -