From eb28edbe58fc9ea323ca5f36c3351ac458de454c Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 27 Apr 2024 15:24:36 +0200 Subject: [DYNAREC] Fix some flag propagation with partial SF_SET/SF_SET_DF --- src/dynarec/dynarec_native.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'src') diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 2482aa08..794ac426 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -350,14 +350,10 @@ static int updateNeed(dynarec_native_t* dyn, int ninst, uint8_t need) { while (ninst>=0) { // need pending but instruction is only a subset: remove pend and use an X_ALL instead need |= dyn->insts[ninst].x64.need_after; - if((need&X_PEND) && (dyn->insts[ninst].x64.state_flags==SF_SUBSET)) { + if((need&X_PEND) && (dyn->insts[ninst].x64.state_flags==SF_SUBSET || dyn->insts[ninst].x64.state_flags==SF_SET || dyn->insts[ninst].x64.state_flags==SF_SET_NODF)) { need &=~X_PEND; need |= X_ALL; } - if((need&X_PEND) && (dyn->insts[ninst].x64.state_flags==SF_SET || dyn->insts[ninst].x64.state_flags==SF_SET_NODF)) { - need &=~X_PEND; - need |= dyn->insts[ninst].x64.set_flags; // SF_SET will compute all flags, it's not SUBSET! - } if((need&X_PEND) && dyn->insts[ninst].x64.state_flags==SF_SUBSET_PENDING) { need |= X_ALL&~(dyn->insts[ninst].x64.set_flags); } -- cgit 1.4.1