Lines Matching refs:ARM

211     if (MO.isDef() && MO.getReg() == ARM::CPSR && !MO.isDead())  in definesCPSR()
222 bool isAM3 = Opcode == ARM::LDRD || Opcode == ARM::STRD; in getMemoryOpOffset()
226 if (Opcode == ARM::t2LDRi12 || Opcode == ARM::t2LDRi8 || in getMemoryOpOffset()
227 Opcode == ARM::t2STRi12 || Opcode == ARM::t2STRi8 || in getMemoryOpOffset()
228 Opcode == ARM::t2LDRDi8 || Opcode == ARM::t2STRDi8 || in getMemoryOpOffset()
229 Opcode == ARM::LDRi12 || Opcode == ARM::STRi12) in getMemoryOpOffset()
233 if (Opcode == ARM::tLDRi || Opcode == ARM::tSTRi || in getMemoryOpOffset()
234 Opcode == ARM::tLDRspi || Opcode == ARM::tSTRspi) in getMemoryOpOffset()
259 case ARM::LDRi12: in getLoadStoreMultipleOpcode()
263 case ARM_AM::ia: return ARM::LDMIA; in getLoadStoreMultipleOpcode()
264 case ARM_AM::da: return ARM::LDMDA; in getLoadStoreMultipleOpcode()
265 case ARM_AM::db: return ARM::LDMDB; in getLoadStoreMultipleOpcode()
266 case ARM_AM::ib: return ARM::LDMIB; in getLoadStoreMultipleOpcode()
268 case ARM::STRi12: in getLoadStoreMultipleOpcode()
272 case ARM_AM::ia: return ARM::STMIA; in getLoadStoreMultipleOpcode()
273 case ARM_AM::da: return ARM::STMDA; in getLoadStoreMultipleOpcode()
274 case ARM_AM::db: return ARM::STMDB; in getLoadStoreMultipleOpcode()
275 case ARM_AM::ib: return ARM::STMIB; in getLoadStoreMultipleOpcode()
277 case ARM::tLDRi: in getLoadStoreMultipleOpcode()
278 case ARM::tLDRspi: in getLoadStoreMultipleOpcode()
284 case ARM_AM::ia: return ARM::tLDMIA; in getLoadStoreMultipleOpcode()
286 case ARM::tSTRi: in getLoadStoreMultipleOpcode()
287 case ARM::tSTRspi: in getLoadStoreMultipleOpcode()
292 case ARM_AM::ia: return ARM::tSTMIA_UPD; in getLoadStoreMultipleOpcode()
294 case ARM::t2LDRi8: in getLoadStoreMultipleOpcode()
295 case ARM::t2LDRi12: in getLoadStoreMultipleOpcode()
299 case ARM_AM::ia: return ARM::t2LDMIA; in getLoadStoreMultipleOpcode()
300 case ARM_AM::db: return ARM::t2LDMDB; in getLoadStoreMultipleOpcode()
302 case ARM::t2STRi8: in getLoadStoreMultipleOpcode()
303 case ARM::t2STRi12: in getLoadStoreMultipleOpcode()
307 case ARM_AM::ia: return ARM::t2STMIA; in getLoadStoreMultipleOpcode()
308 case ARM_AM::db: return ARM::t2STMDB; in getLoadStoreMultipleOpcode()
310 case ARM::VLDRS: in getLoadStoreMultipleOpcode()
314 case ARM_AM::ia: return ARM::VLDMSIA; in getLoadStoreMultipleOpcode()
317 case ARM::VSTRS: in getLoadStoreMultipleOpcode()
321 case ARM_AM::ia: return ARM::VSTMSIA; in getLoadStoreMultipleOpcode()
324 case ARM::VLDRD: in getLoadStoreMultipleOpcode()
328 case ARM_AM::ia: return ARM::VLDMDIA; in getLoadStoreMultipleOpcode()
331 case ARM::VSTRD: in getLoadStoreMultipleOpcode()
335 case ARM_AM::ia: return ARM::VSTMDIA; in getLoadStoreMultipleOpcode()
344 case ARM::LDMIA_RET: in getLoadStoreMultipleSubMode()
345 case ARM::LDMIA: in getLoadStoreMultipleSubMode()
346 case ARM::LDMIA_UPD: in getLoadStoreMultipleSubMode()
347 case ARM::STMIA: in getLoadStoreMultipleSubMode()
348 case ARM::STMIA_UPD: in getLoadStoreMultipleSubMode()
349 case ARM::tLDMIA: in getLoadStoreMultipleSubMode()
350 case ARM::tLDMIA_UPD: in getLoadStoreMultipleSubMode()
351 case ARM::tSTMIA_UPD: in getLoadStoreMultipleSubMode()
352 case ARM::t2LDMIA_RET: in getLoadStoreMultipleSubMode()
353 case ARM::t2LDMIA: in getLoadStoreMultipleSubMode()
354 case ARM::t2LDMIA_UPD: in getLoadStoreMultipleSubMode()
355 case ARM::t2STMIA: in getLoadStoreMultipleSubMode()
356 case ARM::t2STMIA_UPD: in getLoadStoreMultipleSubMode()
357 case ARM::VLDMSIA: in getLoadStoreMultipleSubMode()
358 case ARM::VLDMSIA_UPD: in getLoadStoreMultipleSubMode()
359 case ARM::VSTMSIA: in getLoadStoreMultipleSubMode()
360 case ARM::VSTMSIA_UPD: in getLoadStoreMultipleSubMode()
361 case ARM::VLDMDIA: in getLoadStoreMultipleSubMode()
362 case ARM::VLDMDIA_UPD: in getLoadStoreMultipleSubMode()
363 case ARM::VSTMDIA: in getLoadStoreMultipleSubMode()
364 case ARM::VSTMDIA_UPD: in getLoadStoreMultipleSubMode()
367 case ARM::LDMDA: in getLoadStoreMultipleSubMode()
368 case ARM::LDMDA_UPD: in getLoadStoreMultipleSubMode()
369 case ARM::STMDA: in getLoadStoreMultipleSubMode()
370 case ARM::STMDA_UPD: in getLoadStoreMultipleSubMode()
373 case ARM::LDMDB: in getLoadStoreMultipleSubMode()
374 case ARM::LDMDB_UPD: in getLoadStoreMultipleSubMode()
375 case ARM::STMDB: in getLoadStoreMultipleSubMode()
376 case ARM::STMDB_UPD: in getLoadStoreMultipleSubMode()
377 case ARM::t2LDMDB: in getLoadStoreMultipleSubMode()
378 case ARM::t2LDMDB_UPD: in getLoadStoreMultipleSubMode()
379 case ARM::t2STMDB: in getLoadStoreMultipleSubMode()
380 case ARM::t2STMDB_UPD: in getLoadStoreMultipleSubMode()
381 case ARM::VLDMSDB_UPD: in getLoadStoreMultipleSubMode()
382 case ARM::VSTMSDB_UPD: in getLoadStoreMultipleSubMode()
383 case ARM::VLDMDDB_UPD: in getLoadStoreMultipleSubMode()
384 case ARM::VSTMDDB_UPD: in getLoadStoreMultipleSubMode()
387 case ARM::LDMIB: in getLoadStoreMultipleSubMode()
388 case ARM::LDMIB_UPD: in getLoadStoreMultipleSubMode()
389 case ARM::STMIB: in getLoadStoreMultipleSubMode()
390 case ARM::STMIB_UPD: in getLoadStoreMultipleSubMode()
396 return Opc == ARM::tLDRi || Opc == ARM::tLDRspi; in isT1i32Load()
400 return Opc == ARM::t2LDRi12 || Opc == ARM::t2LDRi8; in isT2i32Load()
404 return Opc == ARM::LDRi12 || isT1i32Load(Opc) || isT2i32Load(Opc) ; in isi32Load()
408 return Opc == ARM::tSTRi || Opc == ARM::tSTRspi; in isT1i32Store()
412 return Opc == ARM::t2STRi12 || Opc == ARM::t2STRi8; in isT2i32Store()
416 return Opc == ARM::STRi12 || isT1i32Store(Opc) || isT2i32Store(Opc); in isi32Store()
420 return isi32Load(Opc) || Opc == ARM::VLDRS || Opc == ARM::VLDRD; in isLoadSingle()
426 case ARM::tLDRi: in getImmScale()
427 case ARM::tSTRi: in getImmScale()
428 case ARM::tLDRspi: in getImmScale()
429 case ARM::tSTRspi: in getImmScale()
431 case ARM::tLDRHi: in getImmScale()
432 case ARM::tSTRHi: in getImmScale()
434 case ARM::tLDRBi: in getImmScale()
435 case ARM::tSTRBi: in getImmScale()
443 case ARM::LDRi12: in getLSMultipleTransferSize()
444 case ARM::STRi12: in getLSMultipleTransferSize()
445 case ARM::tLDRi: in getLSMultipleTransferSize()
446 case ARM::tSTRi: in getLSMultipleTransferSize()
447 case ARM::tLDRspi: in getLSMultipleTransferSize()
448 case ARM::tSTRspi: in getLSMultipleTransferSize()
449 case ARM::t2LDRi8: in getLSMultipleTransferSize()
450 case ARM::t2LDRi12: in getLSMultipleTransferSize()
451 case ARM::t2STRi8: in getLSMultipleTransferSize()
452 case ARM::t2STRi12: in getLSMultipleTransferSize()
453 case ARM::VLDRS: in getLSMultipleTransferSize()
454 case ARM::VSTRS: in getLSMultipleTransferSize()
456 case ARM::VLDRD: in getLSMultipleTransferSize()
457 case ARM::VSTRD: in getLSMultipleTransferSize()
459 case ARM::LDMIA: in getLSMultipleTransferSize()
460 case ARM::LDMDA: in getLSMultipleTransferSize()
461 case ARM::LDMDB: in getLSMultipleTransferSize()
462 case ARM::LDMIB: in getLSMultipleTransferSize()
463 case ARM::STMIA: in getLSMultipleTransferSize()
464 case ARM::STMDA: in getLSMultipleTransferSize()
465 case ARM::STMDB: in getLSMultipleTransferSize()
466 case ARM::STMIB: in getLSMultipleTransferSize()
467 case ARM::tLDMIA: in getLSMultipleTransferSize()
468 case ARM::tLDMIA_UPD: in getLSMultipleTransferSize()
469 case ARM::tSTMIA_UPD: in getLSMultipleTransferSize()
470 case ARM::t2LDMIA: in getLSMultipleTransferSize()
471 case ARM::t2LDMDB: in getLSMultipleTransferSize()
472 case ARM::t2STMIA: in getLSMultipleTransferSize()
473 case ARM::t2STMDB: in getLSMultipleTransferSize()
474 case ARM::VLDMSIA: in getLSMultipleTransferSize()
475 case ARM::VSTMSIA: in getLSMultipleTransferSize()
477 case ARM::VLDMDIA: in getLSMultipleTransferSize()
478 case ARM::VSTMDIA: in getLSMultipleTransferSize()
501 Opc == ARM::tLDRi || Opc == ARM::tLDRHi || Opc == ARM::tLDRBi; in UpdateBaseRegUses()
503 Opc == ARM::tSTRi || Opc == ARM::tSTRHi || Opc == ARM::tSTRBi; in UpdateBaseRegUses()
522 } else if ((Opc == ARM::tSUBi8 || Opc == ARM::tADDi8) && in UpdateBaseRegUses()
529 Offset = (Opc == ARM::tSUBi8) ? in UpdateBaseRegUses()
554 BuildMI(MBB, MBBI, DL, TII->get(ARM::tSUBi8), Base) in UpdateBaseRegUses()
575 BuildMI(MBB, MBBI, DL, TII->get(ARM::tSUBi8), Base) in UpdateBaseRegUses()
639 (MBB.computeRegisterLiveness(TRI, ARM::CPSR, InsertBefore, 20) == in CreateLoadStoreMulti()
648 assert(Base != ARM::SP && "Thumb1 does not allow SP in register list"); in CreateLoadStoreMulti()
649 if (Opcode == ARM::tLDRi) in CreateLoadStoreMulti()
651 else if (Opcode == ARM::tSTRi) in CreateLoadStoreMulti()
667 } else if (Offset != 0 || Opcode == ARM::tLDRspi || Opcode == ARM::tSTRspi) { in CreateLoadStoreMulti()
698 NewBase = findFreeReg(isThumb1 ? ARM::tGPRRegClass : ARM::GPRRegClass); in CreateLoadStoreMulti()
703 int BaseOpc = isThumb2 ? (BaseKill && Base == ARM::SP ? ARM::t2ADDspImm in CreateLoadStoreMulti()
704 : ARM::t2ADDri) in CreateLoadStoreMulti()
705 : (isThumb1 && Base == ARM::SP) in CreateLoadStoreMulti()
706 ? ARM::tADDrSPi in CreateLoadStoreMulti()
708 ? ARM::tADDi3 in CreateLoadStoreMulti()
709 : isThumb1 ? ARM::tADDi8 : ARM::ADDri; in CreateLoadStoreMulti()
715 BaseOpc = isThumb2 ? (BaseKill && Base == ARM::SP ? ARM::t2SUBspImm in CreateLoadStoreMulti()
716 : ARM::t2SUBri) in CreateLoadStoreMulti()
717 : (isThumb1 && Offset < 8 && Base != ARM::SP) in CreateLoadStoreMulti()
718 ? ARM::tSUBi3 in CreateLoadStoreMulti()
719 : isThumb1 ? ARM::tSUBi8 : ARM::SUBri; in CreateLoadStoreMulti()
738 (BaseOpc == ARM::tADDi8 || BaseOpc == ARM::tSUBi8)) { in CreateLoadStoreMulti()
745 BuildMI(MBB, InsertBefore, DL, TII->get(ARM::tMOVSr), NewBase) in CreateLoadStoreMulti()
748 BuildMI(MBB, InsertBefore, DL, TII->get(ARM::tMOVr), NewBase) in CreateLoadStoreMulti()
756 if (BaseOpc == ARM::tADDrSPi) { in CreateLoadStoreMulti()
802 if (Opcode == ARM::tLDMIA) { in CreateLoadStoreMulti()
805 Opcode = ARM::tLDMIA_UPD; in CreateLoadStoreMulti()
842 unsigned LoadStoreOpcode = IsLoad ? ARM::t2LDRDi8 : ARM::t2STRDi8; in CreateLoadStoreDouble()
963 assert(isi32Store(Opcode) || Opcode == ARM::VSTRS || Opcode == ARM::VSTRD); in MergeOpsUpdate()
997 if (getLoadStoreBaseOp(MI).getReg() == ARM::SP && in mayCombineMisaligned()
1039 if (PReg == ARM::SP || PReg == ARM::PC) in FormCandidates()
1052 case ARM::VLDRD: in FormCandidates()
1053 case ARM::VSTRD: in FormCandidates()
1065 if (Reg == ARM::SP || Reg == ARM::PC) in FormCandidates()
1124 case ARM::LDMIA: in getUpdatingLSMultipleOpcode()
1125 case ARM::LDMDA: in getUpdatingLSMultipleOpcode()
1126 case ARM::LDMDB: in getUpdatingLSMultipleOpcode()
1127 case ARM::LDMIB: in getUpdatingLSMultipleOpcode()
1130 case ARM_AM::ia: return ARM::LDMIA_UPD; in getUpdatingLSMultipleOpcode()
1131 case ARM_AM::ib: return ARM::LDMIB_UPD; in getUpdatingLSMultipleOpcode()
1132 case ARM_AM::da: return ARM::LDMDA_UPD; in getUpdatingLSMultipleOpcode()
1133 case ARM_AM::db: return ARM::LDMDB_UPD; in getUpdatingLSMultipleOpcode()
1135 case ARM::STMIA: in getUpdatingLSMultipleOpcode()
1136 case ARM::STMDA: in getUpdatingLSMultipleOpcode()
1137 case ARM::STMDB: in getUpdatingLSMultipleOpcode()
1138 case ARM::STMIB: in getUpdatingLSMultipleOpcode()
1141 case ARM_AM::ia: return ARM::STMIA_UPD; in getUpdatingLSMultipleOpcode()
1142 case ARM_AM::ib: return ARM::STMIB_UPD; in getUpdatingLSMultipleOpcode()
1143 case ARM_AM::da: return ARM::STMDA_UPD; in getUpdatingLSMultipleOpcode()
1144 case ARM_AM::db: return ARM::STMDB_UPD; in getUpdatingLSMultipleOpcode()
1146 case ARM::t2LDMIA: in getUpdatingLSMultipleOpcode()
1147 case ARM::t2LDMDB: in getUpdatingLSMultipleOpcode()
1150 case ARM_AM::ia: return ARM::t2LDMIA_UPD; in getUpdatingLSMultipleOpcode()
1151 case ARM_AM::db: return ARM::t2LDMDB_UPD; in getUpdatingLSMultipleOpcode()
1153 case ARM::t2STMIA: in getUpdatingLSMultipleOpcode()
1154 case ARM::t2STMDB: in getUpdatingLSMultipleOpcode()
1157 case ARM_AM::ia: return ARM::t2STMIA_UPD; in getUpdatingLSMultipleOpcode()
1158 case ARM_AM::db: return ARM::t2STMDB_UPD; in getUpdatingLSMultipleOpcode()
1160 case ARM::VLDMSIA: in getUpdatingLSMultipleOpcode()
1163 case ARM_AM::ia: return ARM::VLDMSIA_UPD; in getUpdatingLSMultipleOpcode()
1164 case ARM_AM::db: return ARM::VLDMSDB_UPD; in getUpdatingLSMultipleOpcode()
1166 case ARM::VLDMDIA: in getUpdatingLSMultipleOpcode()
1169 case ARM_AM::ia: return ARM::VLDMDIA_UPD; in getUpdatingLSMultipleOpcode()
1170 case ARM_AM::db: return ARM::VLDMDDB_UPD; in getUpdatingLSMultipleOpcode()
1172 case ARM::VSTMSIA: in getUpdatingLSMultipleOpcode()
1175 case ARM_AM::ia: return ARM::VSTMSIA_UPD; in getUpdatingLSMultipleOpcode()
1176 case ARM_AM::db: return ARM::VSTMSDB_UPD; in getUpdatingLSMultipleOpcode()
1178 case ARM::VSTMDIA: in getUpdatingLSMultipleOpcode()
1181 case ARM_AM::ia: return ARM::VSTMDIA_UPD; in getUpdatingLSMultipleOpcode()
1182 case ARM_AM::db: return ARM::VSTMDDB_UPD; in getUpdatingLSMultipleOpcode()
1195 case ARM::tADDi8: Scale = 4; CheckCPSRDef = true; break; in isIncrementOrDecrement()
1196 case ARM::tSUBi8: Scale = -4; CheckCPSRDef = true; break; in isIncrementOrDecrement()
1197 case ARM::t2SUBri: in isIncrementOrDecrement()
1198 case ARM::t2SUBspImm: in isIncrementOrDecrement()
1199 case ARM::SUBri: Scale = -1; CheckCPSRDef = true; break; in isIncrementOrDecrement()
1200 case ARM::t2ADDri: in isIncrementOrDecrement()
1201 case ARM::t2ADDspImm: in isIncrementOrDecrement()
1202 case ARM::ADDri: Scale = 1; CheckCPSRDef = true; break; in isIncrementOrDecrement()
1203 case ARM::tADDspi: Scale = 4; CheckCPSRDef = false; break; in isIncrementOrDecrement()
1204 case ARM::tSUBspi: Scale = -4; CheckCPSRDef = false; break; in isIncrementOrDecrement()
1267 if (Reg == ARM::SP || NextMBBI->readsRegister(Reg, TRI) || in findIncDecAfter()
1332 if (MO.getReg() >= ARM::R8) { in MergeBaseUpdateLSMultiple()
1369 case ARM::LDRi12: in getPreIndexedLoadStoreOpcode()
1370 return ARM::LDR_PRE_IMM; in getPreIndexedLoadStoreOpcode()
1371 case ARM::STRi12: in getPreIndexedLoadStoreOpcode()
1372 return ARM::STR_PRE_IMM; in getPreIndexedLoadStoreOpcode()
1373 case ARM::VLDRS: in getPreIndexedLoadStoreOpcode()
1374 return Mode == ARM_AM::add ? ARM::VLDMSIA_UPD : ARM::VLDMSDB_UPD; in getPreIndexedLoadStoreOpcode()
1375 case ARM::VLDRD: in getPreIndexedLoadStoreOpcode()
1376 return Mode == ARM_AM::add ? ARM::VLDMDIA_UPD : ARM::VLDMDDB_UPD; in getPreIndexedLoadStoreOpcode()
1377 case ARM::VSTRS: in getPreIndexedLoadStoreOpcode()
1378 return Mode == ARM_AM::add ? ARM::VSTMSIA_UPD : ARM::VSTMSDB_UPD; in getPreIndexedLoadStoreOpcode()
1379 case ARM::VSTRD: in getPreIndexedLoadStoreOpcode()
1380 return Mode == ARM_AM::add ? ARM::VSTMDIA_UPD : ARM::VSTMDDB_UPD; in getPreIndexedLoadStoreOpcode()
1381 case ARM::t2LDRi8: in getPreIndexedLoadStoreOpcode()
1382 case ARM::t2LDRi12: in getPreIndexedLoadStoreOpcode()
1383 return ARM::t2LDR_PRE; in getPreIndexedLoadStoreOpcode()
1384 case ARM::t2STRi8: in getPreIndexedLoadStoreOpcode()
1385 case ARM::t2STRi12: in getPreIndexedLoadStoreOpcode()
1386 return ARM::t2STR_PRE; in getPreIndexedLoadStoreOpcode()
1394 case ARM::LDRi12: in getPostIndexedLoadStoreOpcode()
1395 return ARM::LDR_POST_IMM; in getPostIndexedLoadStoreOpcode()
1396 case ARM::STRi12: in getPostIndexedLoadStoreOpcode()
1397 return ARM::STR_POST_IMM; in getPostIndexedLoadStoreOpcode()
1398 case ARM::VLDRS: in getPostIndexedLoadStoreOpcode()
1399 return Mode == ARM_AM::add ? ARM::VLDMSIA_UPD : ARM::VLDMSDB_UPD; in getPostIndexedLoadStoreOpcode()
1400 case ARM::VLDRD: in getPostIndexedLoadStoreOpcode()
1401 return Mode == ARM_AM::add ? ARM::VLDMDIA_UPD : ARM::VLDMDDB_UPD; in getPostIndexedLoadStoreOpcode()
1402 case ARM::VSTRS: in getPostIndexedLoadStoreOpcode()
1403 return Mode == ARM_AM::add ? ARM::VSTMSIA_UPD : ARM::VSTMSDB_UPD; in getPostIndexedLoadStoreOpcode()
1404 case ARM::VSTRD: in getPostIndexedLoadStoreOpcode()
1405 return Mode == ARM_AM::add ? ARM::VSTMDIA_UPD : ARM::VSTMDDB_UPD; in getPostIndexedLoadStoreOpcode()
1406 case ARM::t2LDRi8: in getPostIndexedLoadStoreOpcode()
1407 case ARM::t2LDRi12: in getPostIndexedLoadStoreOpcode()
1408 return ARM::t2LDR_POST; in getPostIndexedLoadStoreOpcode()
1409 case ARM::t2LDRBi8: in getPostIndexedLoadStoreOpcode()
1410 case ARM::t2LDRBi12: in getPostIndexedLoadStoreOpcode()
1411 return ARM::t2LDRB_POST; in getPostIndexedLoadStoreOpcode()
1412 case ARM::t2LDRSBi8: in getPostIndexedLoadStoreOpcode()
1413 case ARM::t2LDRSBi12: in getPostIndexedLoadStoreOpcode()
1414 return ARM::t2LDRSB_POST; in getPostIndexedLoadStoreOpcode()
1415 case ARM::t2LDRHi8: in getPostIndexedLoadStoreOpcode()
1416 case ARM::t2LDRHi12: in getPostIndexedLoadStoreOpcode()
1417 return ARM::t2LDRH_POST; in getPostIndexedLoadStoreOpcode()
1418 case ARM::t2LDRSHi8: in getPostIndexedLoadStoreOpcode()
1419 case ARM::t2LDRSHi12: in getPostIndexedLoadStoreOpcode()
1420 return ARM::t2LDRSH_POST; in getPostIndexedLoadStoreOpcode()
1421 case ARM::t2STRi8: in getPostIndexedLoadStoreOpcode()
1422 case ARM::t2STRi12: in getPostIndexedLoadStoreOpcode()
1423 return ARM::t2STR_POST; in getPostIndexedLoadStoreOpcode()
1424 case ARM::t2STRBi8: in getPostIndexedLoadStoreOpcode()
1425 case ARM::t2STRBi12: in getPostIndexedLoadStoreOpcode()
1426 return ARM::t2STRB_POST; in getPostIndexedLoadStoreOpcode()
1427 case ARM::t2STRHi8: in getPostIndexedLoadStoreOpcode()
1428 case ARM::t2STRHi12: in getPostIndexedLoadStoreOpcode()
1429 return ARM::t2STRH_POST; in getPostIndexedLoadStoreOpcode()
1431 case ARM::MVE_VLDRBS16: in getPostIndexedLoadStoreOpcode()
1432 return ARM::MVE_VLDRBS16_post; in getPostIndexedLoadStoreOpcode()
1433 case ARM::MVE_VLDRBS32: in getPostIndexedLoadStoreOpcode()
1434 return ARM::MVE_VLDRBS32_post; in getPostIndexedLoadStoreOpcode()
1435 case ARM::MVE_VLDRBU16: in getPostIndexedLoadStoreOpcode()
1436 return ARM::MVE_VLDRBU16_post; in getPostIndexedLoadStoreOpcode()
1437 case ARM::MVE_VLDRBU32: in getPostIndexedLoadStoreOpcode()
1438 return ARM::MVE_VLDRBU32_post; in getPostIndexedLoadStoreOpcode()
1439 case ARM::MVE_VLDRHS32: in getPostIndexedLoadStoreOpcode()
1440 return ARM::MVE_VLDRHS32_post; in getPostIndexedLoadStoreOpcode()
1441 case ARM::MVE_VLDRHU32: in getPostIndexedLoadStoreOpcode()
1442 return ARM::MVE_VLDRHU32_post; in getPostIndexedLoadStoreOpcode()
1443 case ARM::MVE_VLDRBU8: in getPostIndexedLoadStoreOpcode()
1444 return ARM::MVE_VLDRBU8_post; in getPostIndexedLoadStoreOpcode()
1445 case ARM::MVE_VLDRHU16: in getPostIndexedLoadStoreOpcode()
1446 return ARM::MVE_VLDRHU16_post; in getPostIndexedLoadStoreOpcode()
1447 case ARM::MVE_VLDRWU32: in getPostIndexedLoadStoreOpcode()
1448 return ARM::MVE_VLDRWU32_post; in getPostIndexedLoadStoreOpcode()
1449 case ARM::MVE_VSTRB16: in getPostIndexedLoadStoreOpcode()
1450 return ARM::MVE_VSTRB16_post; in getPostIndexedLoadStoreOpcode()
1451 case ARM::MVE_VSTRB32: in getPostIndexedLoadStoreOpcode()
1452 return ARM::MVE_VSTRB32_post; in getPostIndexedLoadStoreOpcode()
1453 case ARM::MVE_VSTRH32: in getPostIndexedLoadStoreOpcode()
1454 return ARM::MVE_VSTRH32_post; in getPostIndexedLoadStoreOpcode()
1455 case ARM::MVE_VSTRBU8: in getPostIndexedLoadStoreOpcode()
1456 return ARM::MVE_VSTRBU8_post; in getPostIndexedLoadStoreOpcode()
1457 case ARM::MVE_VSTRHU16: in getPostIndexedLoadStoreOpcode()
1458 return ARM::MVE_VSTRHU16_post; in getPostIndexedLoadStoreOpcode()
1459 case ARM::MVE_VSTRWU32: in getPostIndexedLoadStoreOpcode()
1460 return ARM::MVE_VSTRWU32_post; in getPostIndexedLoadStoreOpcode()
1478 bool isAM5 = (Opcode == ARM::VLDRD || Opcode == ARM::VLDRS || in MergeBaseUpdateLoadStore()
1479 Opcode == ARM::VSTRD || Opcode == ARM::VSTRS); in MergeBaseUpdateLoadStore()
1480 bool isAM2 = (Opcode == ARM::LDRi12 || Opcode == ARM::STRi12); in MergeBaseUpdateLoadStore()
1543 if (NewOpc == ARM::LDR_PRE_IMM || NewOpc == ARM::LDRB_PRE_IMM) { in MergeBaseUpdateLoadStore()
1584 if (isAM2 && NewOpc == ARM::STR_POST_IMM) { in MergeBaseUpdateLoadStore()
1615 assert((Opcode == ARM::t2LDRDi8 || Opcode == ARM::t2STRDi8) && in MergeBaseUpdateLSDouble()
1639 NewOpc = Opcode == ARM::t2LDRDi8 ? ARM::t2LDRD_PRE : ARM::t2STRD_PRE; in MergeBaseUpdateLSDouble()
1644 NewOpc = Opcode == ARM::t2LDRDi8 ? ARM::t2LDRD_POST : ARM::t2STRD_POST; in MergeBaseUpdateLSDouble()
1653 if (NewOpc == ARM::t2LDRD_PRE || NewOpc == ARM::t2LDRD_POST) { in MergeBaseUpdateLSDouble()
1656 assert(NewOpc == ARM::t2STRD_PRE || NewOpc == ARM::t2STRD_POST); in MergeBaseUpdateLSDouble()
1680 case ARM::VLDRS: in isMemoryOp()
1681 case ARM::VSTRS: in isMemoryOp()
1682 case ARM::VLDRD: in isMemoryOp()
1683 case ARM::VSTRD: in isMemoryOp()
1684 case ARM::LDRi12: in isMemoryOp()
1685 case ARM::STRi12: in isMemoryOp()
1686 case ARM::tLDRi: in isMemoryOp()
1687 case ARM::tSTRi: in isMemoryOp()
1688 case ARM::tLDRspi: in isMemoryOp()
1689 case ARM::tSTRspi: in isMemoryOp()
1690 case ARM::t2LDRi8: in isMemoryOp()
1691 case ARM::t2LDRi12: in isMemoryOp()
1692 case ARM::t2STRi8: in isMemoryOp()
1693 case ARM::t2STRi12: in isMemoryOp()
1766 if (Opcode != ARM::LDRD && Opcode != ARM::STRD && Opcode != ARM::t2LDRDi8) in FixInvalidRegPairOp()
1779 (Opcode == ARM::LDRD || Opcode == ARM::t2LDRDi8) && STI->isCortexM3(); in FixInvalidRegPairOp()
1781 bool NonConsecutiveRegs = (Opcode == ARM::LDRD || Opcode == ARM::STRD) && in FixInvalidRegPairOp()
1787 bool isT2 = Opcode == ARM::t2LDRDi8 || Opcode == ARM::t2STRDi8; in FixInvalidRegPairOp()
1788 bool isLd = Opcode == ARM::LDRD || Opcode == ARM::t2LDRDi8; in FixInvalidRegPairOp()
1797 assert((isT2 || MI->getOperand(3).getReg() == ARM::NoRegister) && in FixInvalidRegPairOp()
1807 ? (isT2 ? ARM::t2LDMIA : ARM::LDMIA) in FixInvalidRegPairOp()
1808 : (isT2 ? ARM::t2STMIA : ARM::STMIA); in FixInvalidRegPairOp()
1831 ? (isT2 ? (OffImm < 0 ? ARM::t2LDRi8 : ARM::t2LDRi12) : ARM::LDRi12) in FixInvalidRegPairOp()
1832 : (isT2 ? (OffImm < 0 ? ARM::t2STRi8 : ARM::t2STRi12) : ARM::STRi12); in FixInvalidRegPairOp()
1836 ? (isT2 ? (OffImm+4 < 0 ? ARM::t2LDRi8 : ARM::t2LDRi12) : ARM::LDRi12) in FixInvalidRegPairOp()
1837 : (isT2 ? (OffImm+4 < 0 ? ARM::t2STRi8 : ARM::t2STRi12) : ARM::STRi12); in FixInvalidRegPairOp()
1965 } else if (MBBI->getOpcode() == ARM::t2LDRDi8 || in LoadStoreMultipleOpti()
1966 MBBI->getOpcode() == ARM::t2STRDi8) { in LoadStoreMultipleOpti()
2001 if (Opcode == ARM::t2STRDi8 || Opcode == ARM::t2LDRDi8) in LoadStoreMultipleOpti()
2043 (MBBI->getOpcode() == ARM::BX_RET || in MergeReturnIntoLDM()
2044 MBBI->getOpcode() == ARM::tBX_RET || in MergeReturnIntoLDM()
2045 MBBI->getOpcode() == ARM::MOVPCLR)) { in MergeReturnIntoLDM()
2052 if (Opcode == ARM::LDMIA_UPD || Opcode == ARM::LDMDA_UPD || in MergeReturnIntoLDM()
2053 Opcode == ARM::LDMDB_UPD || Opcode == ARM::LDMIB_UPD || in MergeReturnIntoLDM()
2054 Opcode == ARM::t2LDMIA_UPD || Opcode == ARM::t2LDMDB_UPD) { in MergeReturnIntoLDM()
2056 if (MO.getReg() != ARM::LR) in MergeReturnIntoLDM()
2058 unsigned NewOpc = (isThumb2 ? ARM::t2LDMIA_RET : ARM::LDMIA_RET); in MergeReturnIntoLDM()
2059 assert(((isThumb2 && Opcode == ARM::t2LDMIA_UPD) || in MergeReturnIntoLDM()
2060 Opcode == ARM::LDMIA_UPD) && "Unsupported multiple load-return!"); in MergeReturnIntoLDM()
2062 MO.setReg(ARM::PC); in MergeReturnIntoLDM()
2071 if (Info.getReg() == ARM::LR) { in MergeReturnIntoLDM()
2085 MBBI->getOpcode() != ARM::tBX_RET) in CombineMovBx()
2090 if (Prev->getOpcode() != ARM::tMOVr || !Prev->definesRegister(ARM::LR)) in CombineMovBx()
2096 BuildMI(MBB, MBBI, MBBI->getDebugLoc(), TII->get(ARM::tBX)) in CombineMovBx()
2267 if (Opcode == ARM::LDRi12) { in CanFormLdStDWord()
2268 NewOpc = ARM::LDRD; in CanFormLdStDWord()
2269 } else if (Opcode == ARM::STRi12) { in CanFormLdStDWord()
2270 NewOpc = ARM::STRD; in CanFormLdStDWord()
2271 } else if (Opcode == ARM::t2LDRi8 || Opcode == ARM::t2LDRi12) { in CanFormLdStDWord()
2272 NewOpc = ARM::t2LDRDi8; in CanFormLdStDWord()
2275 } else if (Opcode == ARM::t2STRi8 || Opcode == ARM::t2STRi12) { in CanFormLdStDWord()
2276 NewOpc = ARM::t2STRDi8; in CanFormLdStDWord()
2594 case ARM::MVE_VLDRBS16: in getBaseOperandIndex()
2595 case ARM::MVE_VLDRBS32: in getBaseOperandIndex()
2596 case ARM::MVE_VLDRBU16: in getBaseOperandIndex()
2597 case ARM::MVE_VLDRBU32: in getBaseOperandIndex()
2598 case ARM::MVE_VLDRHS32: in getBaseOperandIndex()
2599 case ARM::MVE_VLDRHU32: in getBaseOperandIndex()
2600 case ARM::MVE_VLDRBU8: in getBaseOperandIndex()
2601 case ARM::MVE_VLDRHU16: in getBaseOperandIndex()
2602 case ARM::MVE_VLDRWU32: in getBaseOperandIndex()
2603 case ARM::MVE_VSTRB16: in getBaseOperandIndex()
2604 case ARM::MVE_VSTRB32: in getBaseOperandIndex()
2605 case ARM::MVE_VSTRH32: in getBaseOperandIndex()
2606 case ARM::MVE_VSTRBU8: in getBaseOperandIndex()
2607 case ARM::MVE_VSTRHU16: in getBaseOperandIndex()
2608 case ARM::MVE_VSTRWU32: in getBaseOperandIndex()
2609 case ARM::t2LDRHi8: in getBaseOperandIndex()
2610 case ARM::t2LDRHi12: in getBaseOperandIndex()
2611 case ARM::t2LDRSHi8: in getBaseOperandIndex()
2612 case ARM::t2LDRSHi12: in getBaseOperandIndex()
2613 case ARM::t2LDRBi8: in getBaseOperandIndex()
2614 case ARM::t2LDRBi12: in getBaseOperandIndex()
2615 case ARM::t2LDRSBi8: in getBaseOperandIndex()
2616 case ARM::t2LDRSBi12: in getBaseOperandIndex()
2617 case ARM::t2STRBi8: in getBaseOperandIndex()
2618 case ARM::t2STRBi12: in getBaseOperandIndex()
2619 case ARM::t2STRHi8: in getBaseOperandIndex()
2620 case ARM::t2STRHi12: in getBaseOperandIndex()
2622 case ARM::MVE_VLDRBS16_post: in getBaseOperandIndex()
2623 case ARM::MVE_VLDRBS32_post: in getBaseOperandIndex()
2624 case ARM::MVE_VLDRBU16_post: in getBaseOperandIndex()
2625 case ARM::MVE_VLDRBU32_post: in getBaseOperandIndex()
2626 case ARM::MVE_VLDRHS32_post: in getBaseOperandIndex()
2627 case ARM::MVE_VLDRHU32_post: in getBaseOperandIndex()
2628 case ARM::MVE_VLDRBU8_post: in getBaseOperandIndex()
2629 case ARM::MVE_VLDRHU16_post: in getBaseOperandIndex()
2630 case ARM::MVE_VLDRWU32_post: in getBaseOperandIndex()
2631 case ARM::MVE_VSTRB16_post: in getBaseOperandIndex()
2632 case ARM::MVE_VSTRB32_post: in getBaseOperandIndex()
2633 case ARM::MVE_VSTRH32_post: in getBaseOperandIndex()
2634 case ARM::MVE_VSTRBU8_post: in getBaseOperandIndex()
2635 case ARM::MVE_VSTRHU16_post: in getBaseOperandIndex()
2636 case ARM::MVE_VSTRWU32_post: in getBaseOperandIndex()
2637 case ARM::MVE_VLDRBS16_pre: in getBaseOperandIndex()
2638 case ARM::MVE_VLDRBS32_pre: in getBaseOperandIndex()
2639 case ARM::MVE_VLDRBU16_pre: in getBaseOperandIndex()
2640 case ARM::MVE_VLDRBU32_pre: in getBaseOperandIndex()
2641 case ARM::MVE_VLDRHS32_pre: in getBaseOperandIndex()
2642 case ARM::MVE_VLDRHU32_pre: in getBaseOperandIndex()
2643 case ARM::MVE_VLDRBU8_pre: in getBaseOperandIndex()
2644 case ARM::MVE_VLDRHU16_pre: in getBaseOperandIndex()
2645 case ARM::MVE_VLDRWU32_pre: in getBaseOperandIndex()
2646 case ARM::MVE_VSTRB16_pre: in getBaseOperandIndex()
2647 case ARM::MVE_VSTRB32_pre: in getBaseOperandIndex()
2648 case ARM::MVE_VSTRH32_pre: in getBaseOperandIndex()
2649 case ARM::MVE_VSTRBU8_pre: in getBaseOperandIndex()
2650 case ARM::MVE_VSTRHU16_pre: in getBaseOperandIndex()
2651 case ARM::MVE_VSTRWU32_pre: in getBaseOperandIndex()
2659 case ARM::MVE_VLDRBS16_post: in isPostIndex()
2660 case ARM::MVE_VLDRBS32_post: in isPostIndex()
2661 case ARM::MVE_VLDRBU16_post: in isPostIndex()
2662 case ARM::MVE_VLDRBU32_post: in isPostIndex()
2663 case ARM::MVE_VLDRHS32_post: in isPostIndex()
2664 case ARM::MVE_VLDRHU32_post: in isPostIndex()
2665 case ARM::MVE_VLDRBU8_post: in isPostIndex()
2666 case ARM::MVE_VLDRHU16_post: in isPostIndex()
2667 case ARM::MVE_VLDRWU32_post: in isPostIndex()
2668 case ARM::MVE_VSTRB16_post: in isPostIndex()
2669 case ARM::MVE_VSTRB32_post: in isPostIndex()
2670 case ARM::MVE_VSTRH32_post: in isPostIndex()
2671 case ARM::MVE_VSTRBU8_post: in isPostIndex()
2672 case ARM::MVE_VSTRHU16_post: in isPostIndex()
2673 case ARM::MVE_VSTRWU32_post: in isPostIndex()
2681 case ARM::MVE_VLDRBS16_pre: in isPreIndex()
2682 case ARM::MVE_VLDRBS32_pre: in isPreIndex()
2683 case ARM::MVE_VLDRBU16_pre: in isPreIndex()
2684 case ARM::MVE_VLDRBU32_pre: in isPreIndex()
2685 case ARM::MVE_VLDRHS32_pre: in isPreIndex()
2686 case ARM::MVE_VLDRHU32_pre: in isPreIndex()
2687 case ARM::MVE_VLDRBU8_pre: in isPreIndex()
2688 case ARM::MVE_VLDRHU16_pre: in isPreIndex()
2689 case ARM::MVE_VLDRWU32_pre: in isPreIndex()
2690 case ARM::MVE_VSTRB16_pre: in isPreIndex()
2691 case ARM::MVE_VSTRB32_pre: in isPreIndex()
2692 case ARM::MVE_VSTRH32_pre: in isPreIndex()
2693 case ARM::MVE_VSTRBU8_pre: in isPreIndex()
2694 case ARM::MVE_VSTRHU16_pre: in isPreIndex()
2695 case ARM::MVE_VSTRWU32_pre: in isPreIndex()
2745 case ARM::t2LDRHi12: in AdjustBaseAndOffset()
2746 ConvOpcode = ARM::t2LDRHi8; in AdjustBaseAndOffset()
2748 case ARM::t2LDRSHi12: in AdjustBaseAndOffset()
2749 ConvOpcode = ARM::t2LDRSHi8; in AdjustBaseAndOffset()
2751 case ARM::t2LDRBi12: in AdjustBaseAndOffset()
2752 ConvOpcode = ARM::t2LDRBi8; in AdjustBaseAndOffset()
2754 case ARM::t2LDRSBi12: in AdjustBaseAndOffset()
2755 ConvOpcode = ARM::t2LDRSBi8; in AdjustBaseAndOffset()
2757 case ARM::t2STRHi12: in AdjustBaseAndOffset()
2758 ConvOpcode = ARM::t2STRHi8; in AdjustBaseAndOffset()
2760 case ARM::t2STRBi12: in AdjustBaseAndOffset()
2761 ConvOpcode = ARM::t2STRBi8; in AdjustBaseAndOffset()
2892 if (Increment->definesRegister(ARM::CPSR) || in DistributeIncrements()