This adds the MVE_qDest_rSrc superclass and all its instances.
Instructions in this category take a scalar register (or register
pair) as one of the inputs, and combine it with each lane of the other
vector input.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
- Build Status
Buildable 33680 Build 33679: arc lint + arc unit
Event Timeline
Renamed instruction records in line with the intended MVE naming policy. Also generally tidied up while I was going along, by creating multiclasses and merging pairs of base classes where it saved space.
Revised the VIDUP immediate operand handling so as to draw a distinction between the general concept 'power of 2 which is encoded as a left-shift count in the instruction', and the specific case used in VIDUP which takes a fixed range of inputs and has a custom DiagnosticString as you suggested that explains what it's used for.
Also, while I was adding custom DiagnosticStrings, I realised there could usefully be one on the even- and odd-numbered GPR classes. So I've added those too, which meant changing a couple of existing test files.
Finally, fixed those bits<5> Rx fields, and a couple of others I spotted in a more thorough search (including one in the previous patch, ahem).
Rm should be 4 bits.