This is an archive of the discontinued LLVM Phabricator instance.

[ARM,MVE] Update MVE_VMLA_qr for architecture change.
ClosedPublic

Authored by simon_tatham on Nov 28 2022, 8:39 AM.

Details

Summary

In revision B.q and before of the Armv8-M architecture reference
manual, the vector/scalar forms of the vmla and vmlas instructions
came in signed and unsigned integer forms, such as vmla.s8 q0,q1,r2
or vmlas.u32 q3,q4,r5.

Revision B.r has changed this. There are no longer signed and unsigned
versions of these instructions, since they were functionally identical
anyway. Now there is just vmla.i8 (or i16 or i32, and similarly
for vmlas). Bit 28 of the instruction encoding, which was previously
0 for signed or 1 for unsigned, is now expected to be 0 always.

This change updates LLVM to the new version of the architecture. The
obsoleted encodings for unsigned integers are now decoding errors, and
only the still-valid encoding is ever emitted. This shouldn't break
any existing assembly code, because the old signed and unsigned
versions of the mnemonic are still accepted by the assembler (which is
standard practice anyway for all signedness-agnostic MVE integer
instructions).

Diff Detail

Event Timeline

simon_tatham created this revision.Nov 28 2022, 8:39 AM
simon_tatham requested review of this revision.Nov 28 2022, 8:39 AM
lenary accepted this revision.Nov 28 2022, 9:04 AM
This revision is now accepted and ready to land.Nov 28 2022, 9:04 AM
dmgreen accepted this revision.Nov 28 2022, 1:40 PM

LGTM. Thanks.
It's worth checking the downstream schedules for any fixups they need too.

This revision was landed with ongoing or failed builds.Nov 29 2022, 12:47 AM
This revision was automatically updated to reflect the committed changes.