@@ -1378,6 +1378,77 @@ class SelectionDAG {
1378
1378
SDValue getIndexedStoreVP (SDValue OrigStore, const SDLoc &dl, SDValue Base,
1379
1379
SDValue Offset, ISD::MemIndexedMode AM);
1380
1380
1381
+ SDValue getStridedLoadVP (ISD::MemIndexedMode AM, ISD::LoadExtType ExtType,
1382
+ EVT VT, const SDLoc &DL, SDValue Chain, SDValue Ptr,
1383
+ SDValue Offset, SDValue Stride, SDValue Mask,
1384
+ SDValue EVL, MachinePointerInfo PtrInfo, EVT MemVT,
1385
+ Align Alignment, MachineMemOperand::Flags MMOFlags,
1386
+ const AAMDNodes &AAInfo,
1387
+ const MDNode *Ranges = nullptr ,
1388
+ bool IsExpanding = false );
1389
+ inline SDValue getStridedLoadVP (
1390
+ ISD::MemIndexedMode AM, ISD::LoadExtType ExtType, EVT VT, const SDLoc &DL,
1391
+ SDValue Chain, SDValue Ptr, SDValue Offset, SDValue Stride, SDValue Mask,
1392
+ SDValue EVL, MachinePointerInfo PtrInfo, EVT MemVT,
1393
+ MaybeAlign Alignment = MaybeAlign(),
1394
+ MachineMemOperand::Flags MMOFlags = MachineMemOperand::MONone,
1395
+ const AAMDNodes &AAInfo = AAMDNodes(), const MDNode *Ranges = nullptr,
1396
+ bool IsExpanding = false) {
1397
+ // Ensures that codegen never sees a None Alignment.
1398
+ return getStridedLoadVP (AM, ExtType, VT, DL, Chain, Ptr, Offset, Stride,
1399
+ Mask, EVL, PtrInfo, MemVT,
1400
+ Alignment.getValueOr (getEVTAlign (MemVT)), MMOFlags,
1401
+ AAInfo, Ranges, IsExpanding);
1402
+ }
1403
+ SDValue getStridedLoadVP (ISD::MemIndexedMode AM, ISD::LoadExtType ExtType,
1404
+ EVT VT, const SDLoc &DL, SDValue Chain, SDValue Ptr,
1405
+ SDValue Offset, SDValue Stride, SDValue Mask,
1406
+ SDValue EVL, EVT MemVT, MachineMemOperand *MMO,
1407
+ bool IsExpanding = false );
1408
+ SDValue getStridedLoadVP (EVT VT, const SDLoc &DL, SDValue Chain, SDValue Ptr,
1409
+ SDValue Stride, SDValue Mask, SDValue EVL,
1410
+ MachinePointerInfo PtrInfo, MaybeAlign Alignment,
1411
+ MachineMemOperand::Flags MMOFlags,
1412
+ const AAMDNodes &AAInfo,
1413
+ const MDNode *Ranges = nullptr ,
1414
+ bool IsExpanding = false );
1415
+ SDValue getStridedLoadVP (EVT VT, const SDLoc &DL, SDValue Chain, SDValue Ptr,
1416
+ SDValue Stride, SDValue Mask, SDValue EVL,
1417
+ MachineMemOperand *MMO, bool IsExpanding = false );
1418
+ SDValue
1419
+ getExtStridedLoadVP (ISD::LoadExtType ExtType, const SDLoc &DL, EVT VT,
1420
+ SDValue Chain, SDValue Ptr, SDValue Stride, SDValue Mask,
1421
+ SDValue EVL, MachinePointerInfo PtrInfo, EVT MemVT,
1422
+ MaybeAlign Alignment, MachineMemOperand::Flags MMOFlags,
1423
+ const AAMDNodes &AAInfo, bool IsExpanding = false );
1424
+ SDValue getExtStridedLoadVP (ISD::LoadExtType ExtType, const SDLoc &DL, EVT VT,
1425
+ SDValue Chain, SDValue Ptr, SDValue Stride,
1426
+ SDValue Mask, SDValue EVL, EVT MemVT,
1427
+ MachineMemOperand *MMO, bool IsExpanding = false );
1428
+ SDValue getIndexedStridedLoadVP (SDValue OrigLoad, const SDLoc &DL,
1429
+ SDValue Base, SDValue Offset,
1430
+ ISD::MemIndexedMode AM);
1431
+ SDValue getStridedStoreVP (SDValue Chain, const SDLoc &DL, SDValue Val,
1432
+ SDValue Ptr, SDValue Offset, SDValue Stride,
1433
+ SDValue Mask, SDValue EVL, EVT MemVT,
1434
+ MachineMemOperand *MMO, ISD::MemIndexedMode AM,
1435
+ bool IsTruncating = false ,
1436
+ bool IsCompressing = false );
1437
+ SDValue getTruncStridedStoreVP (SDValue Chain, const SDLoc &DL, SDValue Val,
1438
+ SDValue Ptr, SDValue Stride, SDValue Mask,
1439
+ SDValue EVL, MachinePointerInfo PtrInfo,
1440
+ EVT SVT, Align Alignment,
1441
+ MachineMemOperand::Flags MMOFlags,
1442
+ const AAMDNodes &AAInfo,
1443
+ bool IsCompressing = false );
1444
+ SDValue getTruncStridedStoreVP (SDValue Chain, const SDLoc &DL, SDValue Val,
1445
+ SDValue Ptr, SDValue Stride, SDValue Mask,
1446
+ SDValue EVL, EVT SVT, MachineMemOperand *MMO,
1447
+ bool IsCompressing = false );
1448
+ SDValue getIndexedStridedStoreVP (SDValue OrigStore, const SDLoc &DL,
1449
+ SDValue Base, SDValue Offset,
1450
+ ISD::MemIndexedMode AM);
1451
+
1381
1452
SDValue getGatherVP (SDVTList VTs, EVT VT, const SDLoc &dl,
1382
1453
ArrayRef<SDValue> Ops, MachineMemOperand *MMO,
1383
1454
ISD::MemIndexType IndexType);
0 commit comments