55
66#define DECODE_MACRO_USAGE_LOGGED 0
77
8+ #define PROLOGUE \
9+ reg_t npc = sext_xlen(pc + insn_length(OPCODE))
10+
11+ #define EPILOGUE \
12+ trace_opcode (p, OPCODE, insn); \
13+ return npc
14+
815reg_t fast_rv32i_NAME (processor_t * p, insn_t insn, reg_t pc)
916{
1017 #define xlen 32
11- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
18+ PROLOGUE ;
1219 #include " insns/NAME.h"
13- trace_opcode (p, OPCODE, insn) ;
20+ EPILOGUE ;
1421 #undef xlen
15- return npc;
1622}
1723
1824reg_t fast_rv64i_NAME (processor_t * p, insn_t insn, reg_t pc)
1925{
2026 #define xlen 64
21- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
27+ PROLOGUE ;
2228 #include " insns/NAME.h"
23- trace_opcode (p, OPCODE, insn) ;
29+ EPILOGUE ;
2430 #undef xlen
25- return npc;
2631}
2732
2833#undef DECODE_MACRO_USAGE_LOGGED
@@ -31,21 +36,19 @@ reg_t fast_rv64i_NAME(processor_t* p, insn_t insn, reg_t pc)
3136reg_t logged_rv32i_NAME (processor_t * p, insn_t insn, reg_t pc)
3237{
3338 #define xlen 32
34- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
39+ PROLOGUE ;
3540 #include " insns/NAME.h"
36- trace_opcode (p, OPCODE, insn) ;
41+ EPILOGUE ;
3742 #undef xlen
38- return npc;
3943}
4044
4145reg_t logged_rv64i_NAME (processor_t * p, insn_t insn, reg_t pc)
4246{
4347 #define xlen 64
44- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
48+ PROLOGUE ;
4549 #include " insns/NAME.h"
46- trace_opcode (p, OPCODE, insn) ;
50+ EPILOGUE ;
4751 #undef xlen
48- return npc;
4952}
5053
5154#undef CHECK_REG
@@ -57,21 +60,19 @@ reg_t logged_rv64i_NAME(processor_t* p, insn_t insn, reg_t pc)
5760reg_t fast_rv32e_NAME (processor_t * p, insn_t insn, reg_t pc)
5861{
5962 #define xlen 32
60- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
63+ PROLOGUE ;
6164 #include " insns/NAME.h"
62- trace_opcode (p, OPCODE, insn) ;
65+ EPILOGUE ;
6366 #undef xlen
64- return npc;
6567}
6668
6769reg_t fast_rv64e_NAME (processor_t * p, insn_t insn, reg_t pc)
6870{
6971 #define xlen 64
70- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
72+ PROLOGUE ;
7173 #include " insns/NAME.h"
72- trace_opcode (p, OPCODE, insn) ;
74+ EPILOGUE ;
7375 #undef xlen
74- return npc;
7576}
7677
7778#undef DECODE_MACRO_USAGE_LOGGED
@@ -80,19 +81,17 @@ reg_t fast_rv64e_NAME(processor_t* p, insn_t insn, reg_t pc)
8081reg_t logged_rv32e_NAME (processor_t * p, insn_t insn, reg_t pc)
8182{
8283 #define xlen 32
83- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
84+ PROLOGUE ;
8485 #include " insns/NAME.h"
85- trace_opcode (p, OPCODE, insn) ;
86+ EPILOGUE ;
8687 #undef xlen
87- return npc;
8888}
8989
9090reg_t logged_rv64e_NAME (processor_t * p, insn_t insn, reg_t pc)
9191{
9292 #define xlen 64
93- reg_t npc = sext_xlen (pc + insn_length (OPCODE)) ;
93+ PROLOGUE ;
9494 #include " insns/NAME.h"
95- trace_opcode (p, OPCODE, insn) ;
95+ EPILOGUE ;
9696 #undef xlen
97- return npc;
9897}
0 commit comments