@@ -4173,25 +4173,26 @@ void SelectionDAGBuilder::visitMaskedStore(const CallInst &I,
4173
4173
bool IsCompressing) {
4174
4174
SDLoc sdl = getCurSDLoc ();
4175
4175
4176
- auto getMaskedStoreOps = [&](Value* &Ptr, Value* &Mask, Value* &Src0,
4177
- unsigned & Alignment) {
4176
+ auto getMaskedStoreOps = [&](Value * &Ptr, Value * &Mask, Value * &Src0,
4177
+ MaybeAlign & Alignment) {
4178
4178
// llvm.masked.store.*(Src0, Ptr, alignment, Mask)
4179
4179
Src0 = I.getArgOperand (0 );
4180
4180
Ptr = I.getArgOperand (1 );
4181
- Alignment = cast<ConstantInt>(I.getArgOperand (2 ))->getZExtValue ();
4181
+ Alignment =
4182
+ MaybeAlign (cast<ConstantInt>(I.getArgOperand (2 ))->getZExtValue ());
4182
4183
Mask = I.getArgOperand (3 );
4183
4184
};
4184
- auto getCompressingStoreOps = [&](Value* &Ptr, Value* &Mask, Value* &Src0,
4185
- unsigned & Alignment) {
4185
+ auto getCompressingStoreOps = [&](Value * &Ptr, Value * &Mask, Value * &Src0,
4186
+ MaybeAlign & Alignment) {
4186
4187
// llvm.masked.compressstore.*(Src0, Ptr, Mask)
4187
4188
Src0 = I.getArgOperand (0 );
4188
4189
Ptr = I.getArgOperand (1 );
4189
4190
Mask = I.getArgOperand (2 );
4190
- Alignment = 0 ;
4191
+ Alignment = None ;
4191
4192
};
4192
4193
4193
4194
Value *PtrOperand, *MaskOperand, *Src0Operand;
4194
- unsigned Alignment;
4195
+ MaybeAlign Alignment;
4195
4196
if (IsCompressing)
4196
4197
getCompressingStoreOps (PtrOperand, MaskOperand, Src0Operand, Alignment);
4197
4198
else
@@ -4204,19 +4205,16 @@ void SelectionDAGBuilder::visitMaskedStore(const CallInst &I,
4204
4205
4205
4206
EVT VT = Src0.getValueType ();
4206
4207
if (!Alignment)
4207
- Alignment = DAG.getEVTAlignment (VT);
4208
+ Alignment = DAG.getEVTAlign (VT);
4208
4209
4209
4210
AAMDNodes AAInfo;
4210
4211
I.getAAMetadata (AAInfo);
4211
4212
4212
- MachineMemOperand *MMO =
4213
- DAG.getMachineFunction ().
4214
- getMachineMemOperand (MachinePointerInfo (PtrOperand),
4215
- MachineMemOperand::MOStore,
4216
- // TODO: Make MachineMemOperands aware of scalable
4217
- // vectors.
4218
- VT.getStoreSize ().getKnownMinSize (),
4219
- Alignment, AAInfo);
4213
+ MachineMemOperand *MMO = DAG.getMachineFunction ().getMachineMemOperand (
4214
+ MachinePointerInfo (PtrOperand), MachineMemOperand::MOStore,
4215
+ // TODO: Make MachineMemOperands aware of scalable
4216
+ // vectors.
4217
+ VT.getStoreSize ().getKnownMinSize (), *Alignment, AAInfo);
4220
4218
SDValue StoreNode =
4221
4219
DAG.getMaskedStore (getMemoryRoot (), sdl, Src0, Ptr, Offset, Mask, VT, MMO,
4222
4220
ISD::UNINDEXED, false /* Truncating */ , IsCompressing);
@@ -4316,9 +4314,9 @@ void SelectionDAGBuilder::visitMaskedScatter(const CallInst &I) {
4316
4314
SDValue Src0 = getValue (I.getArgOperand (0 ));
4317
4315
SDValue Mask = getValue (I.getArgOperand (3 ));
4318
4316
EVT VT = Src0.getValueType ();
4319
- unsigned Alignment = (cast<ConstantInt>(I.getArgOperand (2 ))) ->getZExtValue ();
4317
+ MaybeAlign Alignment (cast<ConstantInt>(I.getArgOperand (2 ))->getZExtValue () );
4320
4318
if (!Alignment)
4321
- Alignment = DAG.getEVTAlignment (VT);
4319
+ Alignment = DAG.getEVTAlign (VT);
4322
4320
const TargetLowering &TLI = DAG.getTargetLoweringInfo ();
4323
4321
4324
4322
AAMDNodes AAInfo;
@@ -4331,13 +4329,11 @@ void SelectionDAGBuilder::visitMaskedScatter(const CallInst &I) {
4331
4329
bool UniformBase = getUniformBase (Ptr, Base, Index, IndexType, Scale, this );
4332
4330
4333
4331
unsigned AS = Ptr->getType ()->getScalarType ()->getPointerAddressSpace ();
4334
- MachineMemOperand *MMO = DAG.getMachineFunction ().
4335
- getMachineMemOperand (MachinePointerInfo (AS),
4336
- MachineMemOperand::MOStore,
4337
- // TODO: Make MachineMemOperands aware of scalable
4338
- // vectors.
4339
- MemoryLocation::UnknownSize,
4340
- Alignment, AAInfo);
4332
+ MachineMemOperand *MMO = DAG.getMachineFunction ().getMachineMemOperand (
4333
+ MachinePointerInfo (AS), MachineMemOperand::MOStore,
4334
+ // TODO: Make MachineMemOperands aware of scalable
4335
+ // vectors.
4336
+ MemoryLocation::UnknownSize, *Alignment, AAInfo);
4341
4337
if (!UniformBase) {
4342
4338
Base = DAG.getConstant (0 , sdl, TLI.getPointerTy (DAG.getDataLayout ()));
4343
4339
Index = getValue (Ptr);
@@ -4354,25 +4350,26 @@ void SelectionDAGBuilder::visitMaskedScatter(const CallInst &I) {
4354
4350
void SelectionDAGBuilder::visitMaskedLoad (const CallInst &I, bool IsExpanding) {
4355
4351
SDLoc sdl = getCurSDLoc ();
4356
4352
4357
- auto getMaskedLoadOps = [&](Value* &Ptr, Value* &Mask, Value* &Src0,
4358
- unsigned & Alignment) {
4353
+ auto getMaskedLoadOps = [&](Value * &Ptr, Value * &Mask, Value * &Src0,
4354
+ MaybeAlign & Alignment) {
4359
4355
// @llvm.masked.load.*(Ptr, alignment, Mask, Src0)
4360
4356
Ptr = I.getArgOperand (0 );
4361
- Alignment = cast<ConstantInt>(I.getArgOperand (1 ))->getZExtValue ();
4357
+ Alignment =
4358
+ MaybeAlign (cast<ConstantInt>(I.getArgOperand (1 ))->getZExtValue ());
4362
4359
Mask = I.getArgOperand (2 );
4363
4360
Src0 = I.getArgOperand (3 );
4364
4361
};
4365
- auto getExpandingLoadOps = [&](Value* &Ptr, Value* &Mask, Value* &Src0,
4366
- unsigned & Alignment) {
4362
+ auto getExpandingLoadOps = [&](Value * &Ptr, Value * &Mask, Value * &Src0,
4363
+ MaybeAlign & Alignment) {
4367
4364
// @llvm.masked.expandload.*(Ptr, Mask, Src0)
4368
4365
Ptr = I.getArgOperand (0 );
4369
- Alignment = 0 ;
4366
+ Alignment = None ;
4370
4367
Mask = I.getArgOperand (1 );
4371
4368
Src0 = I.getArgOperand (2 );
4372
4369
};
4373
4370
4374
4371
Value *PtrOperand, *MaskOperand, *Src0Operand;
4375
- unsigned Alignment;
4372
+ MaybeAlign Alignment;
4376
4373
if (IsExpanding)
4377
4374
getExpandingLoadOps (PtrOperand, MaskOperand, Src0Operand, Alignment);
4378
4375
else
@@ -4385,7 +4382,7 @@ void SelectionDAGBuilder::visitMaskedLoad(const CallInst &I, bool IsExpanding) {
4385
4382
4386
4383
EVT VT = Src0.getValueType ();
4387
4384
if (!Alignment)
4388
- Alignment = DAG.getEVTAlignment (VT);
4385
+ Alignment = DAG.getEVTAlign (VT);
4389
4386
4390
4387
AAMDNodes AAInfo;
4391
4388
I.getAAMetadata (AAInfo);
@@ -4403,14 +4400,11 @@ void SelectionDAGBuilder::visitMaskedLoad(const CallInst &I, bool IsExpanding) {
4403
4400
4404
4401
SDValue InChain = AddToChain ? DAG.getRoot () : DAG.getEntryNode ();
4405
4402
4406
- MachineMemOperand *MMO =
4407
- DAG.getMachineFunction ().
4408
- getMachineMemOperand (MachinePointerInfo (PtrOperand),
4409
- MachineMemOperand::MOLoad,
4410
- // TODO: Make MachineMemOperands aware of scalable
4411
- // vectors.
4412
- VT.getStoreSize ().getKnownMinSize (),
4413
- Alignment, AAInfo, Ranges);
4403
+ MachineMemOperand *MMO = DAG.getMachineFunction ().getMachineMemOperand (
4404
+ MachinePointerInfo (PtrOperand), MachineMemOperand::MOLoad,
4405
+ // TODO: Make MachineMemOperands aware of scalable
4406
+ // vectors.
4407
+ VT.getStoreSize ().getKnownMinSize (), *Alignment, AAInfo, Ranges);
4414
4408
4415
4409
SDValue Load =
4416
4410
DAG.getMaskedLoad (VT, sdl, InChain, Ptr, Offset, Mask, Src0, VT, MMO,
@@ -4430,9 +4424,9 @@ void SelectionDAGBuilder::visitMaskedGather(const CallInst &I) {
4430
4424
4431
4425
const TargetLowering &TLI = DAG.getTargetLoweringInfo ();
4432
4426
EVT VT = TLI.getValueType (DAG.getDataLayout (), I.getType ());
4433
- unsigned Alignment = (cast<ConstantInt>(I.getArgOperand (1 ))) ->getZExtValue ();
4427
+ MaybeAlign Alignment (cast<ConstantInt>(I.getArgOperand (1 ))->getZExtValue () );
4434
4428
if (!Alignment)
4435
- Alignment = DAG.getEVTAlignment (VT);
4429
+ Alignment = DAG.getEVTAlign (VT);
4436
4430
4437
4431
AAMDNodes AAInfo;
4438
4432
I.getAAMetadata (AAInfo);
@@ -4445,14 +4439,11 @@ void SelectionDAGBuilder::visitMaskedGather(const CallInst &I) {
4445
4439
SDValue Scale;
4446
4440
bool UniformBase = getUniformBase (Ptr, Base, Index, IndexType, Scale, this );
4447
4441
unsigned AS = Ptr->getType ()->getScalarType ()->getPointerAddressSpace ();
4448
- MachineMemOperand *MMO =
4449
- DAG.getMachineFunction ().
4450
- getMachineMemOperand (MachinePointerInfo (AS),
4451
- MachineMemOperand::MOLoad,
4452
- // TODO: Make MachineMemOperands aware of scalable
4453
- // vectors.
4454
- MemoryLocation::UnknownSize,
4455
- Alignment, AAInfo, Ranges);
4442
+ MachineMemOperand *MMO = DAG.getMachineFunction ().getMachineMemOperand (
4443
+ MachinePointerInfo (AS), MachineMemOperand::MOLoad,
4444
+ // TODO: Make MachineMemOperands aware of scalable
4445
+ // vectors.
4446
+ MemoryLocation::UnknownSize, *Alignment, AAInfo, Ranges);
4456
4447
4457
4448
if (!UniformBase) {
4458
4449
Base = DAG.getConstant (0 , sdl, TLI.getPointerTy (DAG.getDataLayout ()));
@@ -4479,16 +4470,14 @@ void SelectionDAGBuilder::visitAtomicCmpXchg(const AtomicCmpXchgInst &I) {
4479
4470
MVT MemVT = getValue (I.getCompareOperand ()).getSimpleValueType ();
4480
4471
SDVTList VTs = DAG.getVTList (MemVT, MVT::i1, MVT::Other);
4481
4472
4482
- auto Alignment = DAG.getEVTAlignment (MemVT);
4483
4473
const TargetLowering &TLI = DAG.getTargetLoweringInfo ();
4484
4474
auto Flags = TLI.getAtomicMemOperandFlags (I, DAG.getDataLayout ());
4485
4475
4486
4476
MachineFunction &MF = DAG.getMachineFunction ();
4487
- MachineMemOperand *MMO =
4488
- MF.getMachineMemOperand (MachinePointerInfo (I.getPointerOperand ()),
4489
- Flags, MemVT.getStoreSize (), Alignment,
4490
- AAMDNodes (), nullptr , SSID, SuccessOrdering,
4491
- FailureOrdering);
4477
+ MachineMemOperand *MMO = MF.getMachineMemOperand (
4478
+ MachinePointerInfo (I.getPointerOperand ()), Flags, MemVT.getStoreSize (),
4479
+ DAG.getEVTAlign (MemVT), AAMDNodes (), nullptr , SSID, SuccessOrdering,
4480
+ FailureOrdering);
4492
4481
4493
4482
SDValue L = DAG.getAtomicCmpSwap (ISD::ATOMIC_CMP_SWAP_WITH_SUCCESS,
4494
4483
dl, MemVT, VTs, InChain,
@@ -4527,15 +4516,13 @@ void SelectionDAGBuilder::visitAtomicRMW(const AtomicRMWInst &I) {
4527
4516
SDValue InChain = getRoot ();
4528
4517
4529
4518
auto MemVT = getValue (I.getValOperand ()).getSimpleValueType ();
4530
- auto Alignment = DAG.getEVTAlignment (MemVT);
4531
4519
const TargetLowering &TLI = DAG.getTargetLoweringInfo ();
4532
4520
auto Flags = TLI.getAtomicMemOperandFlags (I, DAG.getDataLayout ());
4533
4521
4534
4522
MachineFunction &MF = DAG.getMachineFunction ();
4535
- MachineMemOperand *MMO =
4536
- MF.getMachineMemOperand (MachinePointerInfo (I.getPointerOperand ()), Flags,
4537
- MemVT.getStoreSize (), Alignment, AAMDNodes (),
4538
- nullptr , SSID, Ordering);
4523
+ MachineMemOperand *MMO = MF.getMachineMemOperand (
4524
+ MachinePointerInfo (I.getPointerOperand ()), Flags, MemVT.getStoreSize (),
4525
+ DAG.getEVTAlign (MemVT), AAMDNodes (), nullptr , SSID, Ordering);
4539
4526
4540
4527
SDValue L =
4541
4528
DAG.getAtomic (NT, dl, MemVT, InChain,
0 commit comments