Skip to content

ArmPattern: remaining load/store forms (signed byte/halfword, exclusive, acquire/release) #8

Closed

Description

@scizzydo

The new parse_load_store<op, scale, unscaled> in ArmPattern.hpp makes most of these one table row each.

  • LDRSB/LDRSH and LDURSB/LDURSH: opc is 10 for an X destination and 11 for W, so bit 22 comes from Rt (like bit 30 does for LDR). Needs a small tweak to parse_load_store.
  • LDPSW, LDNP/STNP.
  • Exclusive and acquire/release: LDXR/STXR/LDAXR/STLXR (+ B/H forms), LDAR/STLR, LDAPR.
  • LSE atomics: CAS/CASA/CASAL, LDADD/LDADDAL, SWP, STADD (alias).

🤖 Generated with Claude Code

Activity

  1. scizzydo commented on Oct 12, 2026

    @scizzydo
    OwnerAuthor

    Addressed in #12:

    • LDRSB/LDRSH and LDURSB/LDURSH: parse_load_store gained a sign_extend flag; bit 22 comes from Rt (W 1, X 0) and ? leaves it open.
    • LDPSW (X only), LDNP/STNP (signed offset only; pre/post-index gives mask 0), via parse_ldp<opc, no_allocate>.
    • LDXR/STXR/LDAXR/STLXR/LDAR/STLR/LDAPR with their B/H forms, and LDXP/STXP/LDAXP/STLXP: size comes from Rt (not from Ws or Xn).
    • LSE: CAS, SWP, LD<op>, ST<op> for ADD/CLR/EOR/SET/SMAX/SMIN/UMAX/UMIN with every A/L/AL and B/H suffix, read from the mnemonic (parse_atomic) rather than ~130 table rows. The mnemonic buffer grew to 15 characters for LDSMAXALB.

    🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions