summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/Thumb2/mve-ldst-offset.ll
Commit message (Collapse)AuthorAgeFilesLines
* [ARM] Fix MVE ldst offset rangesDavid Green2019-09-031-60/+30
| | | | | | | | | | | | | | | We were using isShiftedInt<7, Shift>(RHSC) to detect the ranges of offsets to fold into MVE loads/stores. The instructions actually take a 7 bit unsigned integer which is either added or subtracted. So something more like isShiftedUInt<7, Shift>(abs(RHSC)). Instead I've changes this to use the isScaledConstantInRange method, same as in SelectT2AddrModeImm7Offset used by pre/post inc, which seemed to already be getting this correct. Differential revision: https://reviews.llvm.org/D66997 llvm-svn: 370731
* [ARM] More MVE load/store tests for offsets around the negative limit. NFCDavid Green2019-09-031-0/+430
| | | | llvm-svn: 370726
* [ARM] Fix alignment checks for BE VLDRHDavid Green2019-08-151-43/+142
| | | | | | | | | | | | We need to allow any alignment at least 2, not just exactly 2, so that the big endian loads and stores can be selected successfully. I've also added extra BE testing for the load and store tests. Thanks to Oliver for the report. Differential Revision: https://reviews.llvm.org/D66222 llvm-svn: 368996
* [ARM] Tighten up VLDRH.32 with low alignmentsDavid Green2019-08-081-20/+23
| | | | | | | | | | | | VLDRH needs to have an alignment of at least 2, including the widening/narrowing versions. This tightens up the ISel patterns for it and alters allowsMisalignedMemoryAccesses so that unaligned accesses are expanded through the stack. It also fixed some incorrect shift amounts, which seemed to be passing a multiple not a shift. Differential Revision: https://reviews.llvm.org/D65580 llvm-svn: 368256
* [ARM] Rejig MVE load store tests. NFCDavid Green2019-08-081-353/+505
| | | | | | | This adjusts the load/store tests for better testing of alignments. It also adds some extra alignment 1 tests, useful for future commits. llvm-svn: 368255
* [ARM] Widening loads and narrowing storesDavid Green2019-06-281-342/+95
| | | | | | | | | | | | MVE has instructions to widen as it loads, and narrow as it stores. This adds the required patterns and legalisation to make them work including specifying that they are legal, patterns to select them and test changes. Patch by David Sherwood. Differential Revision: https://reviews.llvm.org/D63839 llvm-svn: 364636
* [ARM] MVE loads and storesDavid Green2019-06-281-0/+1469
This fills in the gaps for basic MVE loads and stores, allowing unaligned access and adding far too many tests. These will become important as narrowing/expanding and pre/post inc are added. Big endian might still not be handled very well, because we have not yet added bitcasts (and I'm not sure how we want it to work yet). I've included the alignment code anyway which maps with our current patterns. We plan to return to that later. Code written by Simon Tatham, with additional tests from Me and Mikhail Maltsev. Differential Revision: https://reviews.llvm.org/D63838 llvm-svn: 364633
OpenPOWER on IntegriCloud