HomePhabricator

ARM64: separate load/store operands to simplify assembler

Description

ARM64: separate load/store operands to simplify assembler

This changes ARM64 to use separate operands for each component of an
address, and look for separate '[', '$Rn, ..., ']' tokens when
parsing.

This allows us to do away with quite a bit of special C++ code to
handle monolithic "addressing modes" in the MC components. The more
incremental matching of the assembler operands also allows for better
diagnostics when LLVM is presented with invalid input.

Most of the complexity here is with the register-offset instructions,
which were extremely dodgy beforehand: even when the instruction used
wM, LLVM's model had xM as an operand. We papered over this
discrepancy before, but that approach doesn't work now so I split them
into separate X and W variants.

Details

Committed
tnorthoverMay 22 2014, 4:56 AM
Parents
rL209424: [mips] Make unalignedload.ll test stricter and easier to modify for…
Branches
Unknown
Tags
Unknown