@@ -285,49 +285,49 @@ def : InstRW<[CortexA55WriteVLD6], (instregex "LD1Threev(16b|8h|4s|2d)$")>;
285
285
def : InstRW<[CortexA55WriteVLD4], (instregex "LD1Fourv(8b|4h|2s|1d)$")>;
286
286
def : InstRW<[CortexA55WriteVLD8], (instregex "LD1Fourv(16b|8h|4s|2d)$")>;
287
287
288
- def : InstRW<[CortexA55WriteVLD1, WriteAdr ], (instregex "LD1i(8|16|32|64)_POST$")>;
289
- def : InstRW<[CortexA55WriteVLD1, WriteAdr ], (instregex "LD1Rv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
290
- def : InstRW<[CortexA55WriteVLD1, WriteAdr ], (instregex "LD1Onev(8b|4h|2s|1d)_POST$")>;
291
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD1Onev(16b|8h|4s|2d)_POST$")>;
292
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD1Twov(8b|4h|2s|1d)_POST$")>;
293
- def : InstRW<[CortexA55WriteVLD4, WriteAdr ], (instregex "LD1Twov(16b|8h|4s|2d)_POST$")>;
294
- def : InstRW<[CortexA55WriteVLD3, WriteAdr ], (instregex "LD1Threev(8b|4h|2s|1d)_POST$")>;
295
- def : InstRW<[CortexA55WriteVLD6, WriteAdr ], (instregex "LD1Threev(16b|8h|4s|2d)_POST$")>;
296
- def : InstRW<[CortexA55WriteVLD4, WriteAdr ], (instregex "LD1Fourv(8b|4h|2s|1d)_POST$")>;
297
- def : InstRW<[CortexA55WriteVLD8, WriteAdr ], (instregex "LD1Fourv(16b|8h|4s|2d)_POST$")>;
288
+ def : InstRW<[WriteAdr, CortexA55WriteVLD1 ], (instregex "LD1i(8|16|32|64)_POST$")>;
289
+ def : InstRW<[WriteAdr, CortexA55WriteVLD1 ], (instregex "LD1Rv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
290
+ def : InstRW<[WriteAdr, CortexA55WriteVLD1 ], (instregex "LD1Onev(8b|4h|2s|1d)_POST$")>;
291
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD1Onev(16b|8h|4s|2d)_POST$")>;
292
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD1Twov(8b|4h|2s|1d)_POST$")>;
293
+ def : InstRW<[WriteAdr, CortexA55WriteVLD4 ], (instregex "LD1Twov(16b|8h|4s|2d)_POST$")>;
294
+ def : InstRW<[WriteAdr, CortexA55WriteVLD3 ], (instregex "LD1Threev(8b|4h|2s|1d)_POST$")>;
295
+ def : InstRW<[WriteAdr, CortexA55WriteVLD6 ], (instregex "LD1Threev(16b|8h|4s|2d)_POST$")>;
296
+ def : InstRW<[WriteAdr, CortexA55WriteVLD4 ], (instregex "LD1Fourv(8b|4h|2s|1d)_POST$")>;
297
+ def : InstRW<[WriteAdr, CortexA55WriteVLD8 ], (instregex "LD1Fourv(16b|8h|4s|2d)_POST$")>;
298
298
299
299
// 2-element structures
300
300
def : InstRW<[CortexA55WriteVLD2], (instregex "LD2i(8|16|32|64)$")>;
301
301
def : InstRW<[CortexA55WriteVLD2], (instregex "LD2Rv(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
302
302
def : InstRW<[CortexA55WriteVLD2], (instregex "LD2Twov(8b|4h|2s)$")>;
303
303
def : InstRW<[CortexA55WriteVLD4], (instregex "LD2Twov(16b|8h|4s|2d)$")>;
304
304
305
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD2i(8|16|32|64)(_POST)?$")>;
306
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD2Rv(8b|4h|2s|1d|16b|8h|4s|2d)(_POST)?$")>;
307
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD2Twov(8b|4h|2s)(_POST)?$")>;
308
- def : InstRW<[CortexA55WriteVLD4, WriteAdr ], (instregex "LD2Twov(16b|8h|4s|2d)(_POST)?$")>;
305
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD2i(8|16|32|64)(_POST)?$")>;
306
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD2Rv(8b|4h|2s|1d|16b|8h|4s|2d)(_POST)?$")>;
307
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD2Twov(8b|4h|2s)(_POST)?$")>;
308
+ def : InstRW<[WriteAdr, CortexA55WriteVLD4 ], (instregex "LD2Twov(16b|8h|4s|2d)(_POST)?$")>;
309
309
310
310
// 3-element structures
311
311
def : InstRW<[CortexA55WriteVLD2], (instregex "LD3i(8|16|32|64)$")>;
312
312
def : InstRW<[CortexA55WriteVLD2], (instregex "LD3Rv(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
313
313
def : InstRW<[CortexA55WriteVLD3], (instregex "LD3Threev(8b|4h|2s|1d)$")>;
314
314
def : InstRW<[CortexA55WriteVLD6], (instregex "LD3Threev(16b|8h|4s|2d)$")>;
315
315
316
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD3i(8|16|32|64)_POST$")>;
317
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD3Rv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
318
- def : InstRW<[CortexA55WriteVLD3, WriteAdr ], (instregex "LD3Threev(8b|4h|2s|1d)_POST$")>;
319
- def : InstRW<[CortexA55WriteVLD6, WriteAdr ], (instregex "LD3Threev(16b|8h|4s|2d)_POST$")>;
316
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD3i(8|16|32|64)_POST$")>;
317
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD3Rv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
318
+ def : InstRW<[WriteAdr, CortexA55WriteVLD3 ], (instregex "LD3Threev(8b|4h|2s|1d)_POST$")>;
319
+ def : InstRW<[WriteAdr, CortexA55WriteVLD6 ], (instregex "LD3Threev(16b|8h|4s|2d)_POST$")>;
320
320
321
321
// 4-element structures
322
322
def : InstRW<[CortexA55WriteVLD2], (instregex "LD4i(8|16|32|64)$")>; // load single 4-el structure to one lane of 4 regs.
323
323
def : InstRW<[CortexA55WriteVLD2], (instregex "LD4Rv(8b|4h|2s|1d|16b|8h|4s|2d)$")>; // load single 4-el structure, replicate to all lanes of 4 regs.
324
324
def : InstRW<[CortexA55WriteVLD4], (instregex "LD4Fourv(8b|4h|2s|1d)$")>; // load multiple 4-el structures to 4 regs.
325
325
def : InstRW<[CortexA55WriteVLD8], (instregex "LD4Fourv(16b|8h|4s|2d)$")>;
326
326
327
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD4i(8|16|32|64)_POST$")>;
328
- def : InstRW<[CortexA55WriteVLD2, WriteAdr ], (instregex "LD4Rv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
329
- def : InstRW<[CortexA55WriteVLD4, WriteAdr ], (instregex "LD4Fourv(8b|4h|2s|1d)_POST$")>;
330
- def : InstRW<[CortexA55WriteVLD8, WriteAdr ], (instregex "LD4Fourv(16b|8h|4s|2d)_POST$")>;
327
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD4i(8|16|32|64)_POST$")>;
328
+ def : InstRW<[WriteAdr, CortexA55WriteVLD2 ], (instregex "LD4Rv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
329
+ def : InstRW<[WriteAdr, CortexA55WriteVLD4 ], (instregex "LD4Fourv(8b|4h|2s|1d)_POST$")>;
330
+ def : InstRW<[WriteAdr, CortexA55WriteVLD8 ], (instregex "LD4Fourv(16b|8h|4s|2d)_POST$")>;
331
331
332
332
//---
333
333
// Vector Stores
@@ -337,28 +337,28 @@ def : InstRW<[CortexA55WriteVST1], (instregex "ST1Onev(8b|4h|2s|1d|16b|8h|4s|2d)
337
337
def : InstRW<[CortexA55WriteVST1], (instregex "ST1Twov(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
338
338
def : InstRW<[CortexA55WriteVST2], (instregex "ST1Threev(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
339
339
def : InstRW<[CortexA55WriteVST4], (instregex "ST1Fourv(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
340
- def : InstRW<[CortexA55WriteVST1, WriteAdr ], (instregex "ST1i(8|16|32|64)_POST$")>;
341
- def : InstRW<[CortexA55WriteVST1, WriteAdr ], (instregex "ST1Onev(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
342
- def : InstRW<[CortexA55WriteVST1, WriteAdr ], (instregex "ST1Twov(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
343
- def : InstRW<[CortexA55WriteVST2, WriteAdr ], (instregex "ST1Threev(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
344
- def : InstRW<[CortexA55WriteVST4, WriteAdr ], (instregex "ST1Fourv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
340
+ def : InstRW<[WriteAdr, CortexA55WriteVST1 ], (instregex "ST1i(8|16|32|64)_POST$")>;
341
+ def : InstRW<[WriteAdr, CortexA55WriteVST1 ], (instregex "ST1Onev(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
342
+ def : InstRW<[WriteAdr, CortexA55WriteVST1 ], (instregex "ST1Twov(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
343
+ def : InstRW<[WriteAdr, CortexA55WriteVST2 ], (instregex "ST1Threev(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
344
+ def : InstRW<[WriteAdr, CortexA55WriteVST4 ], (instregex "ST1Fourv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
345
345
346
346
def : InstRW<[CortexA55WriteVST2], (instregex "ST2i(8|16|32|64)$")>;
347
347
def : InstRW<[CortexA55WriteVST2], (instregex "ST2Twov(8b|4h|2s)$")>;
348
348
def : InstRW<[CortexA55WriteVST4], (instregex "ST2Twov(16b|8h|4s|2d)$")>;
349
- def : InstRW<[CortexA55WriteVST2, WriteAdr ], (instregex "ST2i(8|16|32|64)_POST$")>;
350
- def : InstRW<[CortexA55WriteVST2, WriteAdr ], (instregex "ST2Twov(8b|4h|2s)_POST$")>;
351
- def : InstRW<[CortexA55WriteVST4, WriteAdr ], (instregex "ST2Twov(16b|8h|4s|2d)_POST$")>;
349
+ def : InstRW<[WriteAdr, CortexA55WriteVST2 ], (instregex "ST2i(8|16|32|64)_POST$")>;
350
+ def : InstRW<[WriteAdr, CortexA55WriteVST2 ], (instregex "ST2Twov(8b|4h|2s)_POST$")>;
351
+ def : InstRW<[WriteAdr, CortexA55WriteVST4 ], (instregex "ST2Twov(16b|8h|4s|2d)_POST$")>;
352
352
353
353
def : InstRW<[CortexA55WriteVST2], (instregex "ST3i(8|16|32|64)$")>;
354
354
def : InstRW<[CortexA55WriteVST4], (instregex "ST3Threev(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
355
- def : InstRW<[CortexA55WriteVST2, WriteAdr ], (instregex "ST3i(8|16|32|64)_POST$")>;
356
- def : InstRW<[CortexA55WriteVST4, WriteAdr ], (instregex "ST3Threev(8b|4h|2s|1d|2d|16b|8h|4s|4d)_POST$")>;
355
+ def : InstRW<[WriteAdr, CortexA55WriteVST2 ], (instregex "ST3i(8|16|32|64)_POST$")>;
356
+ def : InstRW<[WriteAdr, CortexA55WriteVST4 ], (instregex "ST3Threev(8b|4h|2s|1d|2d|16b|8h|4s|4d)_POST$")>;
357
357
358
358
def : InstRW<[CortexA55WriteVST2], (instregex "ST4i(8|16|32|64)$")>;
359
359
def : InstRW<[CortexA55WriteVST4], (instregex "ST4Fourv(8b|4h|2s|1d|16b|8h|4s|2d)$")>;
360
- def : InstRW<[CortexA55WriteVST2, WriteAdr ], (instregex "ST4i(8|16|32|64)_POST$")>;
361
- def : InstRW<[CortexA55WriteVST4, WriteAdr ], (instregex "ST4Fourv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
360
+ def : InstRW<[WriteAdr, CortexA55WriteVST2 ], (instregex "ST4i(8|16|32|64)_POST$")>;
361
+ def : InstRW<[WriteAdr, CortexA55WriteVST4 ], (instregex "ST4Fourv(8b|4h|2s|1d|16b|8h|4s|2d)_POST$")>;
362
362
363
363
//---
364
364
// Floating Point Conversions, MAC, DIV, SQRT
0 commit comments