From 7a01de6a4504d55ab1b92faa8b9f4527a530e533 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 19 Aug 2026 16:08:02 +0100 Subject: [PATCH] Add extra tables to cpp-gen.odin --- .../isa/x86/tablegen/cpp-compiler/cpp-gen.odin | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin b/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin index d5a40b355..bd4cc4e11 100644 --- a/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin +++ b/core/rexcode/isa/x86/tablegen/cpp-compiler/cpp-gen.odin @@ -146,6 +146,17 @@ main :: proc() { ClobberFlag_IF = 1<<7, ClobberFlag_TF = 1<<8, }; + static u16 const CLOBBER_FLAGS_COND = ClobberFlag_CF|ClobberFlag_PF|ClobberFlag_AF|ClobberFlag_ZF|ClobberFlag_SF|ClobberFlag_OF; + + char const *clobber_flag_bit_name(u16 bit) { + switch (bit) { + case ClobberFlag_CF: return \"c\"; case ClobberFlag_PF: return \"p\"; + case ClobberFlag_AF: return \"a\"; case ClobberFlag_ZF: return \"z\"; + case ClobberFlag_SF: return \"s\"; case ClobberFlag_OF: return \"o\"; + } + return \"?\"; + } + enum SideEffectFlags : u16 { SideEffectFlag_FENCE = 1<<0, // memory-ordering barrier (LFENCE/SFENCE/MFENCE, LOCK) SideEffectFlag_SERIALIZING = 1<<1, // architecturally serializing (drains pipeline)