• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/llvm-project/llvm/lib/Target/AArch64/

Lines Matching refs:AArch64

1 //===- AArch64LoadStoreOptimizer.cpp - AArch64 load/store opt. pass -------===//
73 #define AARCH64_LOAD_STORE_OPT_NAME "AArch64 load / store optimization pass"
216 case AArch64::STRBBui:
217 case AArch64::STURBBi:
218 case AArch64::STRHHui:
219 case AArch64::STURHHi:
230 case AArch64::STGOffset:
231 case AArch64::STZGOffset:
232 case AArch64::ST2GOffset:
233 case AArch64::STZ2GOffset:
247 case AArch64::STRDui:
248 case AArch64::STURDi:
249 case AArch64::STRQui:
250 case AArch64::STURQi:
251 case AArch64::STRBBui:
252 case AArch64::STURBBi:
253 case AArch64::STRHHui:
254 case AArch64::STURHHi:
255 case AArch64::STRWui:
256 case AArch64::STURWi:
257 case AArch64::STRXui:
258 case AArch64::STURXi:
259 case AArch64::LDRDui:
260 case AArch64::LDURDi:
261 case AArch64::LDRQui:
262 case AArch64::LDURQi:
263 case AArch64::LDRWui:
264 case AArch64::LDURWi:
265 case AArch64::LDRXui:
266 case AArch64::LDURXi:
267 case AArch64::STRSui:
268 case AArch64::STURSi:
269 case AArch64::LDRSui:
270 case AArch64::LDURSi:
272 case AArch64::LDRSWui:
273 return AArch64::LDRWui;
274 case AArch64::LDURSWi:
275 return AArch64::LDURWi;
283 case AArch64::STRBBui:
284 return AArch64::STRHHui;
285 case AArch64::STRHHui:
286 return AArch64::STRWui;
287 case AArch64::STURBBi:
288 return AArch64::STURHHi;
289 case AArch64::STURHHi:
290 return AArch64::STURWi;
291 case AArch64::STURWi:
292 return AArch64::STURXi;
293 case AArch64::STRWui:
294 return AArch64::STRXui;
302 case AArch64::STRSui:
303 case AArch64::STURSi:
304 return AArch64::STPSi;
305 case AArch64::STRDui:
306 case AArch64::STURDi:
307 return AArch64::STPDi;
308 case AArch64::STRQui:
309 case AArch64::STURQi:
310 return AArch64::STPQi;
311 case AArch64::STRWui:
312 case AArch64::STURWi:
313 return AArch64::STPWi;
314 case AArch64::STRXui:
315 case AArch64::STURXi:
316 return AArch64::STPXi;
317 case AArch64::LDRSui:
318 case AArch64::LDURSi:
319 return AArch64::LDPSi;
320 case AArch64::LDRDui:
321 case AArch64::LDURDi:
322 return AArch64::LDPDi;
323 case AArch64::LDRQui:
324 case AArch64::LDURQi:
325 return AArch64::LDPQi;
326 case AArch64::LDRWui:
327 case AArch64::LDURWi:
328 return AArch64::LDPWi;
329 case AArch64::LDRXui:
330 case AArch64::LDURXi:
331 return AArch64::LDPXi;
332 case AArch64::LDRSWui:
333 case AArch64::LDURSWi:
334 return AArch64::LDPSWi;
345 case AArch64::LDRBBui:
346 return StOpc == AArch64::STRBBui || StOpc == AArch64::STRHHui ||
347 StOpc == AArch64::STRWui || StOpc == AArch64::STRXui;
348 case AArch64::LDURBBi:
349 return StOpc == AArch64::STURBBi || StOpc == AArch64::STURHHi ||
350 StOpc == AArch64::STURWi || StOpc == AArch64::STURXi;
351 case AArch64::LDRHHui:
352 return StOpc == AArch64::STRHHui || StOpc == AArch64::STRWui ||
353 StOpc == AArch64::STRXui;
354 case AArch64::LDURHHi:
355 return StOpc == AArch64::STURHHi || StOpc == AArch64::STURWi ||
356 StOpc == AArch64::STURXi;
357 case AArch64::LDRWui:
358 return StOpc == AArch64::STRWui || StOpc == AArch64::STRXui;
359 case AArch64::LDURWi:
360 return StOpc == AArch64::STURWi || StOpc == AArch64::STURXi;
361 case AArch64::LDRXui:
362 return StOpc == AArch64::STRXui;
363 case AArch64::LDURXi:
364 return StOpc == AArch64::STURXi;
376 case AArch64::STRSui:
377 return AArch64::STRSpre;
378 case AArch64::STRDui:
379 return AArch64::STRDpre;
380 case AArch64::STRQui:
381 return AArch64::STRQpre;
382 case AArch64::STRBBui:
383 return AArch64::STRBBpre;
384 case AArch64::STRHHui:
385 return AArch64::STRHHpre;
386 case AArch64::STRWui:
387 return AArch64::STRWpre;
388 case AArch64::STRXui:
389 return AArch64::STRXpre;
390 case AArch64::LDRSui:
391 return AArch64::LDRSpre;
392 case AArch64::LDRDui:
393 return AArch64::LDRDpre;
394 case AArch64::LDRQui:
395 return AArch64::LDRQpre;
396 case AArch64::LDRBBui:
397 return AArch64::LDRBBpre;
398 case AArch64::LDRHHui:
399 return AArch64::LDRHHpre;
400 case AArch64::LDRWui:
401 return AArch64::LDRWpre;
402 case AArch64::LDRXui:
403 return AArch64::LDRXpre;
404 case AArch64::LDRSWui:
405 return AArch64::LDRSWpre;
406 case AArch64::LDPSi:
407 return AArch64::LDPSpre;
408 case AArch64::LDPSWi:
409 return AArch64::LDPSWpre;
410 case AArch64::LDPDi:
411 return AArch64::LDPDpre;
412 case AArch64::LDPQi:
413 return AArch64::LDPQpre;
414 case AArch64::LDPWi:
415 return AArch64::LDPWpre;
416 case AArch64::LDPXi:
417 return AArch64::LDPXpre;
418 case AArch64::STPSi:
419 return AArch64::STPSpre;
420 case AArch64::STPDi:
421 return AArch64::STPDpre;
422 case AArch64::STPQi:
423 return AArch64::STPQpre;
424 case AArch64::STPWi:
425 return AArch64::STPWpre;
426 case AArch64::STPXi:
427 return AArch64::STPXpre;
428 case AArch64::STGOffset:
429 return AArch64::STGPreIndex;
430 case AArch64::STZGOffset:
431 return AArch64::STZGPreIndex;
432 case AArch64::ST2GOffset:
433 return AArch64::ST2GPreIndex;
434 case AArch64::STZ2GOffset:
435 return AArch64::STZ2GPreIndex;
436 case AArch64::STGPi:
437 return AArch64::STGPpre;
445 case AArch64::STRSui:
446 case AArch64::STURSi:
447 return AArch64::STRSpost;
448 case AArch64::STRDui:
449 case AArch64::STURDi:
450 return AArch64::STRDpost;
451 case AArch64::STRQui:
452 case AArch64::STURQi:
453 return AArch64::STRQpost;
454 case AArch64::STRBBui:
455 return AArch64::STRBBpost;
456 case AArch64::STRHHui:
457 return AArch64::STRHHpost;
458 case AArch64::STRWui:
459 case AArch64::STURWi:
460 return AArch64::STRWpost;
461 case AArch64::STRXui:
462 case AArch64::STURXi:
463 return AArch64::STRXpost;
464 case AArch64::LDRSui:
465 case AArch64::LDURSi:
466 return AArch64::LDRSpost;
467 case AArch64::LDRDui:
468 case AArch64::LDURDi:
469 return AArch64::LDRDpost;
470 case AArch64::LDRQui:
471 case AArch64::LDURQi:
472 return AArch64::LDRQpost;
473 case AArch64::LDRBBui:
474 return AArch64::LDRBBpost;
475 case AArch64::LDRHHui:
476 return AArch64::LDRHHpost;
477 case AArch64::LDRWui:
478 case AArch64::LDURWi:
479 return AArch64::LDRWpost;
480 case AArch64::LDRXui:
481 case AArch64::LDURXi:
482 return AArch64::LDRXpost;
483 case AArch64::LDRSWui:
484 return AArch64::LDRSWpost;
485 case AArch64::LDPSi:
486 return AArch64::LDPSpost;
487 case AArch64::LDPSWi:
488 return AArch64::LDPSWpost;
489 case AArch64::LDPDi:
490 return AArch64::LDPDpost;
491 case AArch64::LDPQi:
492 return AArch64::LDPQpost;
493 case AArch64::LDPWi:
494 return AArch64::LDPWpost;
495 case AArch64::LDPXi:
496 return AArch64::LDPXpost;
497 case AArch64::STPSi:
498 return AArch64::STPSpost;
499 case AArch64::STPDi:
500 return AArch64::STPDpost;
501 case AArch64::STPQi:
502 return AArch64::STPQpost;
503 case AArch64::STPWi:
504 return AArch64::STPWpost;
505 case AArch64::STPXi:
506 return AArch64::STPXpost;
507 case AArch64::STGOffset:
508 return AArch64::STGPostIndex;
509 case AArch64::STZGOffset:
510 return AArch64::STZGPostIndex;
511 case AArch64::ST2GOffset:
512 return AArch64::ST2GPostIndex;
513 case AArch64::STZ2GOffset:
514 return AArch64::STZ2GPostIndex;
515 case AArch64::STGPi:
516 return AArch64::STGPpost;
524 case AArch64::LDPSi:
525 case AArch64::LDPSWi:
526 case AArch64::LDPDi:
527 case AArch64::LDPQi:
528 case AArch64::LDPWi:
529 case AArch64::LDPXi:
530 case AArch64::STPSi:
531 case AArch64::STPDi:
532 case AArch64::STPQi:
533 case AArch64::STPWi:
534 case AArch64::STPXi:
535 case AArch64::STGPi:
594 return (Opc == AArch64::STRWui || Opc == AArch64::STURWi ||
596 getLdStRegOp(MI).getReg() == AArch64::WZR;
604 case AArch64::LDRBBui:
605 case AArch64::LDRHHui:
606 case AArch64::LDRWui:
607 case AArch64::LDRXui:
609 case AArch64::LDURBBi:
610 case AArch64::LDURHHi:
611 case AArch64::LDURWi:
612 case AArch64::LDURXi:
623 case AArch64::STRSui:
624 case AArch64::STRDui:
625 case AArch64::STRQui:
626 case AArch64::STRXui:
627 case AArch64::STRWui:
628 case AArch64::STRHHui:
629 case AArch64::STRBBui:
630 case AArch64::LDRSui:
631 case AArch64::LDRDui:
632 case AArch64::LDRQui:
633 case AArch64::LDRXui:
634 case AArch64::LDRWui:
635 case AArch64::LDRHHui:
636 case AArch64::LDRBBui:
637 case AArch64::STGOffset:
638 case AArch64::STZGOffset:
639 case AArch64::ST2GOffset:
640 case AArch64::STZ2GOffset:
641 case AArch64::STGPi:
643 case AArch64::STURSi:
644 case AArch64::STURDi:
645 case AArch64::STURQi:
646 case AArch64::STURWi:
647 case AArch64::STURXi:
648 case AArch64::LDURSi:
649 case AArch64::LDURDi:
650 case AArch64::LDURQi:
651 case AArch64::LDURWi:
652 case AArch64::LDURXi:
654 case AArch64::LDPSi:
655 case AArch64::LDPSWi:
656 case AArch64::LDPDi:
657 case AArch64::LDPQi:
658 case AArch64::LDPWi:
659 case AArch64::LDPXi:
660 case AArch64::STPSi:
661 case AArch64::STPDi:
662 case AArch64::STPQi:
663 case AArch64::STPWi:
664 case AArch64::STPXi:
722 .addReg(isNarrowStore(Opc) ? AArch64::WZR : AArch64::XZR)
968 Register DstRegW = TRI->getSubReg(DstRegX, AArch64::sub_32);
984 BuildMI(*MBB, InsertionPoint, DL, TII->get(AArch64::SBFMXri), DstRegX)
1019 bool IsStoreXReg = TRI->getRegClass(AArch64::GPR64RegClassID)->contains(StRt);
1022 TRI->getRegClass(AArch64::GPR32RegClassID)->contains(StRt)) &&
1046 TII->get(IsStoreXReg ? AArch64::ORRXrs : AArch64::ORRWrs), LdRt)
1047 .addReg(IsStoreXReg ? AArch64::XZR : AArch64::WZR)
1069 LdRt, AArch64::sub_32, &AArch64::GPR64RegClass))
1086 TII->get(IsStoreXReg ? AArch64::ANDXri : AArch64::ANDWri),
1094 TII->get(IsStoreXReg ? AArch64::UBFMXri : AArch64::UBFMWri),
1636 assert((Update->getOpcode() == AArch64::ADDXri ||
1637 Update->getOpcode() == AArch64::SUBXri) &&
1649 if (Update->getOpcode() == AArch64::SUBXri)
1707 case AArch64::SUBXri:
1708 case AArch64::ADDXri:
1724 if (MI.getOpcode() == AArch64::SUBXri)
1769 if (!isTagStore(MemMI) && MemMI.getOpcode() != AArch64::STGPi) {