You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Define and test a deterministic LinxISA llvm-objdump presentation contract for
mixed-width instruction streams, with B.IOS aligned consistently with B.IOT, B.IOR, B.DIM, and the bundle header.
This is a text formatting / InstPrinter integration issue, not an instruction
address-alignment defect and not a request to change any encoding or semantics.
It is narrower than #38, which owns canonical PTO operand syntax and round-trip
semantics.
The notation above spells tabs as \t so the defect survives Markdown
rendering. In the original file:
624 instruction mnemonics start at expanded visual column 24;
all 15 B.IOS mnemonics start at column 23;
normal 32-bit lines use 5 spaces + TAB after the raw word;
normal 16-bit lines use 9 spaces + TAB;
B.IOS uses only 5 spaces, so it is shifted one column left;
operand columns and comma/arrow spacing also vary by mnemonic;
bundle descriptor lines have the same leading indentation as BSTART, so the
hierarchy is not visually expressed.
The addresses are legal. LinxISA is a variable-length 16/32/48/64-bit stream
with instruction starts on 16-bit halfword boundaries. A 32-bit instruction at address % 4 == 2 is not a binary alignment bug. The sequence above advances
by 4, 4, 4, 2, 4, and 4 bytes and decodes continuously from a symbol boundary.
Current HEAD status
At LLVM 9fb4f7aa89ee22541bfae288e2085ada266ffd75 (23.0.0git), a pipe-only
probe already produces aligned raw-byte and mnemonic columns:
Therefore, do not assume current HEAD still has the legacy one-column defect.
The deliverable is to lock a canonical output contract with tests and define an
explicit legacy artifact regeneration/backport path if desired.
Also do not re-decode the legacy ELF with an incompatible LLVM 23 decoder and
silently treat semantic spelling changes as formatting fixes. The checked-in .elf.diss is the authoritative text for its Clang/LLD 15.0.4 profile. For
example, its four B.FPATR words were printed as <unknown> by an incompatible
LLVM 23 decoder; that is a version mismatch, not indentation evidence.
Expected formatting contract
For LinxISA llvm-objdump -d / -dl output:
Keep address, raw machine bytes, mnemonic, and operand columns stable.
Align B.IOS with B.IOT, B.IOR, B.DIM, and bundle headers.
Keep 16/32/48/64-bit instructions aligned in the same columns without drift.
Make tabs/spaces deterministic across terminals, GitHub rendering, and
FileCheck input. Prefer one documented policy rather than emitter-specific
whitespace.
The exact column widths and whether bundle descriptors receive extra visual
indentation are implementation decisions, but the result must be deterministic
and tested.
Minimal reproduction
Use binaries from the same build directory and record provenance:
Demonstrate byte-identical object output before and after any formatting-only
change.
Decide and document whether legacy Clang/LLD 15.0.4 artifacts are regenerated
with their compatible decoder, receive a targeted backport, or remain frozen.
Never silently rewrite a legacy artifact with an incompatible decoder.
Summary
Define and test a deterministic LinxISA
llvm-objdumppresentation contract formixed-width instruction streams, with
B.IOSaligned consistently withB.IOT,B.IOR,B.DIM, and the bundle header.This is a text formatting / InstPrinter integration issue, not an instruction
address-alignment defect and not a request to change any encoding or semantics.
It is narrower than #38, which owns canonical PTO operand syntax and round-trip
semantics.
Artifact evidence
Latest checked-in artifact:
.elf.dissf2ccec38c4cb4210143018a003b1fedc3a0ca251.comment:clang version 15.0.4 (linx64v5-musl-local e8242e9627c4634a09055c59f729a4482b297212)andLinker: LLD 15.0.4Representative mixed 16/32-bit bundle, preserving the checked-in text:
The notation above spells tabs as
\tso the defect survives Markdownrendering. In the original file:
B.IOSmnemonics start at column 23;5 spaces + TABafter the raw word;9 spaces + TAB;B.IOSuses only5 spaces, so it is shifted one column left;BSTART, so thehierarchy is not visually expressed.
The addresses are legal. LinxISA is a variable-length 16/32/48/64-bit stream
with instruction starts on 16-bit halfword boundaries. A 32-bit instruction at
address % 4 == 2is not a binary alignment bug. The sequence above advancesby 4, 4, 4, 2, 4, and 4 bytes and decodes continuously from a symbol boundary.
Current HEAD status
At LLVM
9fb4f7aa89ee22541bfae288e2085ada266ffd75(23.0.0git), a pipe-onlyprobe already produces aligned raw-byte and mnemonic columns:
Therefore, do not assume current HEAD still has the legacy one-column defect.
The deliverable is to lock a canonical output contract with tests and define an
explicit legacy artifact regeneration/backport path if desired.
Also do not re-decode the legacy ELF with an incompatible LLVM 23 decoder and
silently treat semantic spelling changes as formatting fixes. The checked-in
.elf.dissis the authoritative text for its Clang/LLD 15.0.4 profile. Forexample, its four
B.FPATRwords were printed as<unknown>by an incompatibleLLVM 23 decoder; that is a version mismatch, not indentation evidence.
Expected formatting contract
For LinxISA
llvm-objdump -d/-dloutput:B.IOSwithB.IOT,B.IOR,B.DIM, and bundle headers.FileCheck input. Prefer one documented policy rather than emitter-specific
whitespace.
[PTO v0.58][MC] Canonicalize B.IOS/B.IOT/B.IOR assembly and disassembly #38.
instructions without changing parseable assembly text.
PE masks, TSize semantics, or any other architecture behavior.
A display-only target could look like:
The exact column widths and whether bundle descriptors receive extra visual
indentation are implementation decisions, but the result must be deterministic
and tested.
Minimal reproduction
Use binaries from the same build directory and record provenance:
Add 48-bit and 64-bit forms to the test stream so the raw-byte column contract
is exercised across every supported instruction width.
Acceptance criteria
B.IOSforms:B.IOS S0, mask=0000/0001/1111;B.IOS mask=..., ->S0/S255<128B..8KB>.instructions in one object.
llvm-objdumpoutput, not onlyllvm-mc -show-encodingormnemonic regexes.
whitespace for
B.IOS,B.IOT,B.IOR, andB.DIM.by [PTO v0.58][MC] Canonicalize B.IOS/B.IOT/B.IOR assembly and disassembly #38.
change.
with their compatible decoder, receive a targeted backport, or remain frozen.