[all-commits] [llvm/llvm-project] e45cbf: [ARM, MVE] Update MVE_VMLA_qr for architecture change.

Simon Tatham via All-commits all-commits at lists.llvm.org
Tue Nov 29 00:47:26 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e45cbf9923e96f543215c5294a289f43b8d3605d
      https://github.com/llvm/llvm-project/commit/e45cbf9923e96f543215c5294a289f43b8d3605d
  Author: Simon Tatham <simon.tatham at arm.com>
  Date:   2022-11-29 (Tue, 29 Nov 2022)

  Changed paths:
    M llvm/lib/Target/ARM/ARMInstrMVE.td
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-tail-data-types.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/spillingmove.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/vmldava_in_vpt.mir
    M llvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll
    M llvm/test/CodeGen/Thumb2/mve-gather-scatter-tailpred.ll
    M llvm/test/CodeGen/Thumb2/mve-intrinsics/ternary.ll
    M llvm/test/CodeGen/Thumb2/mve-qrintr.ll
    M llvm/test/CodeGen/Thumb2/mve-qrintrsplat.ll
    M llvm/test/CodeGen/Thumb2/mve-vmla.ll
    M llvm/test/CodeGen/Thumb2/mve-vmovlloop.ll
    M llvm/test/MC/ARM/mve-qdest-rsrc.s
    M llvm/test/MC/Disassembler/ARM/mve-qdest-rsrc.txt
    M llvm/test/Transforms/LoopVectorize/ARM/mve-reductions.ll
    M llvm/unittests/Target/ARM/MachineInstrTest.cpp

  Log Message:
  -----------
  [ARM,MVE] Update MVE_VMLA_qr for architecture change.

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).

Reviewed By: dmgreen, lenary

Differential Revision: https://reviews.llvm.org/D138827




More information about the All-commits mailing list