This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Add MVE integer vector min/max instructions.
ClosedPublic

Authored by simon_tatham on May 30 2019, 8:20 AM.

Details

Summary

These form a small family of their own, to go with the floating-point
VMINNM/VMAXNM instructions added in a previous commit.

They introduce the first of many special cases in the mnemonic
recognition code, because VMIN with the E suffix used by the VPT
predication system needs to avoid being interpreted as the nonexistent
instruction 'VMI' with an ordinary 'NE' condition suffix.

Diff Detail

Repository
rL LLVM

Event Timeline

simon_tatham created this revision.May 30 2019, 8:20 AM
ostannard added inline comments.
llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
5943 ↗(On Diff #202206)

Why is this a startswith check, I don't see any valid mnemonics with extra letters on the end.

Remastered patch to apply cleanly against current trunk.

miyuki added a subscriber: miyuki.Jun 11 2019, 5:54 AM
miyuki added inline comments.Jun 12 2019, 8:57 AM
llvm/lib/Target/ARM/ARMInstrMVE.td
730 ↗(On Diff #204025)

These definitions can be combined into a multiclass.

  • Removed the pointless startswith (which I'll have to do in a lot of the rest of the series too)
  • Added multiclass as suggested
simon_tatham marked 2 inline comments as done.Jun 18 2019, 1:59 AM
ostannard added inline comments.Jun 18 2019, 2:06 AM
llvm/test/MC/ARM/mve-minmax.s
3 ↗(On Diff #205271)

Why have you removed this? There are still ERROR-NOFP check lines, which are now unused.

Reinstated RUN: lines that vanished in a rebase error (sorry)

Renamed the instructions' Tablegen ids for consistency, in line with a
review comment @ostannard made on the followup patch D62672.

This revision is now accepted and ready to land.Jun 18 2019, 7:34 AM
This revision was automatically updated to reflect the committed changes.