Infer #clobber memory and #clobber cc from the mnemonics directly

This commit is contained in:
gingerBill
2026-08-12 12:45:48 +01:00
parent b9a7ed9942
commit 2300a48782
5 changed files with 60 additions and 8 deletions

View File

@@ -192,6 +192,18 @@ struct Asm_amd64 {
bool writes_mem;
bool reads_mem;
SideEffectFlags side_effects;
bool implies_clobber_cc() {
u16 const CC_MASK = ClobberFlag_CF|ClobberFlag_PF|ClobberFlag_AF|
ClobberFlag_ZF|ClobberFlag_SF|ClobberFlag_OF;
return ((flags_wr | flags_undef) & CC_MASK) != 0;
}
bool implies_clobber_memory() {
return writes_mem || reads_mem ||
(side_effects & (SideEffectFlag_FENCE |
SideEffectFlag_CACHE |
SideEffectFlag_SERIALIZING)) != 0;
}
};
static u16 const register_codes[REG_COUNT];