Skip to content

Commit 09bdbcb

Browse files
authored
[LA64_DYNAREC] Micro-optimization for emit_test32c (#3318)
1 parent c23de7d commit 09bdbcb

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/dynarec/la64/dynarec_la64_emit_tests.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -689,10 +689,10 @@ void emit_test32c(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int64_t c,
689689
MOV64xw(s3, c);
690690
AND(s3, s1, s3);
691691
}
692-
if (dyn->insts[ninst].nat_flags_fusion) {
692+
if (dyn->insts[ninst].nat_flags_fusion && !rex.w) {
693693
if (dyn->insts[ninst].nat_flags_needsign) {
694-
if (!rex.w) SEXT_W(s3, s3);
695-
} else if (!rex.w) {
694+
SEXT_W(s3, s3);
695+
} else if (((uint64_t)c >> 32) != 0) {
696696
ZEROUP(s3);
697697
}
698698
}
@@ -730,7 +730,7 @@ void emit_test32c(dynarec_la64_t* dyn, int ninst, rex_t rex, int s1, int64_t c,
730730
if (dyn->insts[ninst].nat_flags_fusion && !rex.w) {
731731
if (dyn->insts[ninst].nat_flags_needsign) {
732732
SEXT_W(s3, s3);
733-
} else {
733+
} else if (((uint64_t)c >> 32) != 0) {
734734
ZEROUP(s3);
735735
}
736736
}

0 commit comments

Comments
 (0)