Skip to content

Commit 8c55c6d

Browse files
committed
disable instruction spliting for arm64 cores
1 parent 5f1bd1e commit 8c55c6d

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

models/processor/spx/pipeline.cc

+6-6
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ void pipeline_t::Qsim_mem_cb(int core_id, uint64_t vaddr, uint64_t paddr, uint8_
121121

122122
if(type) { // store
123123
// there can't be mem_cb after mem_cb or dest_reg/flag_cb
124-
if(Qsim_cb_status > SPX_QSIM_MEM_CB) {
124+
if(Qsim_cb_status > SPX_QSIM_MEM_CB && config.arch_type != SPX_A64) {
125125
Qsim_post_cb(next_inst);
126126
fetch(next_inst);
127127

@@ -162,7 +162,7 @@ void pipeline_t::Qsim_mem_cb(int core_id, uint64_t vaddr, uint64_t paddr, uint8_
162162
}
163163
else { // load
164164
// there can't be mem_cb after mem_cb or dest_reg/flag_cb
165-
if(Qsim_cb_status > SPX_QSIM_MEM_CB) {
165+
if(Qsim_cb_status > SPX_QSIM_MEM_CB && config.arch_type != SPX_A64) {
166166
Qsim_post_cb(next_inst);
167167
fetch(next_inst);
168168

@@ -210,7 +210,7 @@ void pipeline_t::Qsim_reg_cb(int core_id, int reg, uint8_t size, int type) {
210210
if(type) { // dest
211211
if(size > 0) { // regs
212212
// there can be multiple dest regs (e.g., div/mul) - don't use >= sign
213-
if(Qsim_cb_status > SPX_QSIM_DEST_REG_CB) {
213+
if(Qsim_cb_status > SPX_QSIM_DEST_REG_CB && config.arch_type != SPX_A64) {
214214
Qsim_post_cb(next_inst);
215215
fetch(next_inst);
216216

@@ -251,7 +251,7 @@ void pipeline_t::Qsim_reg_cb(int core_id, int reg, uint8_t size, int type) {
251251
Qsim_cb_status = SPX_QSIM_DEST_REG_CB;
252252
}
253253
else { // flags
254-
if(Qsim_cb_status >= SPX_QSIM_DEST_FLAG_CB) {
254+
if(Qsim_cb_status >= SPX_QSIM_DEST_FLAG_CB && config.arch_type != SPX_A64) {
255255
Qsim_post_cb(next_inst);
256256
fetch(next_inst);
257257

@@ -291,7 +291,7 @@ void pipeline_t::Qsim_reg_cb(int core_id, int reg, uint8_t size, int type) {
291291
else { // src
292292
if(size > 0) { // regs
293293
// there can be multiple src regs - don't use >= sign
294-
if(Qsim_cb_status > SPX_QSIM_SRC_REG_CB) {
294+
if(Qsim_cb_status > SPX_QSIM_SRC_REG_CB && config.arch_type != SPX_A64) {
295295
Qsim_post_cb(next_inst);
296296
fetch(next_inst);
297297

@@ -328,7 +328,7 @@ void pipeline_t::Qsim_reg_cb(int core_id, int reg, uint8_t size, int type) {
328328
Qsim_cb_status = SPX_QSIM_SRC_REG_CB;
329329
}
330330
else { // flags
331-
if(Qsim_cb_status >= SPX_QSIM_SRC_FLAG_CB) {
331+
if(Qsim_cb_status >= SPX_QSIM_SRC_FLAG_CB && config.arch_type != SPX_A64) {
332332
Qsim_post_cb(next_inst);
333333
fetch(next_inst);
334334

0 commit comments

Comments
 (0)