From e4cff78a708bc766645bdc99bbcba2b5d5633a86 Mon Sep 17 00:00:00 2001 From: Brendan Punsky Date: Thu, 18 Jun 2026 03:05:25 -0400 Subject: [PATCH] rexcode/arm32: document BF family as intentionally unimplemented The 5 Branch Future mnemonics (BF/BFI_BR/BFL/BFLX/BFCSEL) are left enum-only on purpose: deprecated ARMv8.1-M, not disassemblable by llvm-objdump (so unverifiable), and a correct encoder needs dual-offset PC-relative relocation infrastructure that doesn't exist. Noted in the enum for future readers. --- core/rexcode/arm32/mnemonics.odin | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/core/rexcode/arm32/mnemonics.odin b/core/rexcode/arm32/mnemonics.odin index ba4b8529a..4759f3c15 100644 --- a/core/rexcode/arm32/mnemonics.odin +++ b/core/rexcode/arm32/mnemonics.odin @@ -405,8 +405,15 @@ Mnemonic :: enum u16 { LETP, // loop end with tail predication LCTP, // loop clear tail predication - BF, // branch future (ARMv8.1-M) - BFI_BR, // branch future indirect + // Branch Future (ARMv8.1-M). INTENTIONALLY NOT ENCODED: this feature is + // deprecated and effectively dead -- llvm-objdump cannot even disassemble + // these, so they can't be round-trip-verified, and a correct encoder would + // need dual-offset PC-relative relocation infrastructure (a `boff` bf-point + // plus a separate branch target, both linker fixups) that does not exist + // here. Left as enum-only on purpose; revisit only if BF is ever needed, + // by first adding BRANCH_BF_* relocation types + a resolver. + BF, // branch future + BFI_BR, // branch future indirect (bfx) BFL, // branch future and link BFLX, // branch future link and exchange BFCSEL, // branch future conditional select