@@ -1948,13 +1948,9 @@ SDValue SITargetLowering::lowerKernArgParameterPtr(SelectionDAG &DAG,
1948
1948
const DataLayout &DL = DAG.getDataLayout();
1949
1949
MachineFunction &MF = DAG.getMachineFunction();
1950
1950
const SIMachineFunctionInfo *Info = MF.getInfo<SIMachineFunctionInfo>();
1951
-
1952
- const ArgDescriptor *InputPtrReg;
1953
- const TargetRegisterClass *RC;
1954
- LLT ArgTy;
1955
1951
MVT PtrVT = getPointerTy(DL, AMDGPUAS::CONSTANT_ADDRESS);
1956
1952
1957
- std::tie( InputPtrReg, RC, ArgTy) =
1953
+ auto [ InputPtrReg, RC, ArgTy] =
1958
1954
Info->getPreloadedValue(AMDGPUFunctionArgInfo::KERNARG_SEGMENT_PTR);
1959
1955
1960
1956
// We may not have the kernarg segment argument if we have no kernel
@@ -3335,25 +3331,18 @@ void SITargetLowering::passSpecialInputs(
3335
3331
// clang-format on
3336
3332
3337
3333
for (auto Attr : ImplicitAttrs) {
3338
- const ArgDescriptor *OutgoingArg;
3339
- const TargetRegisterClass *ArgRC;
3340
- LLT ArgTy;
3341
-
3342
3334
AMDGPUFunctionArgInfo::PreloadedValue InputID = Attr.first;
3343
3335
3344
3336
// If the callee does not use the attribute value, skip copying the value.
3345
3337
if (CLI.CB->hasFnAttr(Attr.second))
3346
3338
continue;
3347
3339
3348
- std::tie( OutgoingArg, ArgRC, ArgTy) =
3340
+ const auto [ OutgoingArg, ArgRC, ArgTy] =
3349
3341
CalleeArgInfo->getPreloadedValue(InputID);
3350
3342
if (!OutgoingArg)
3351
3343
continue;
3352
3344
3353
- const ArgDescriptor *IncomingArg;
3354
- const TargetRegisterClass *IncomingArgRC;
3355
- LLT Ty;
3356
- std::tie(IncomingArg, IncomingArgRC, Ty) =
3345
+ const auto [IncomingArg, IncomingArgRC, Ty] =
3357
3346
CallerArgInfo.getPreloadedValue(InputID);
3358
3347
assert(IncomingArgRC == ArgRC);
3359
3348
@@ -3396,11 +3385,8 @@ void SITargetLowering::passSpecialInputs(
3396
3385
3397
3386
// Pack workitem IDs into a single register or pass it as is if already
3398
3387
// packed.
3399
- const ArgDescriptor *OutgoingArg;
3400
- const TargetRegisterClass *ArgRC;
3401
- LLT Ty;
3402
3388
3403
- std::tie( OutgoingArg, ArgRC, Ty) =
3389
+ auto [ OutgoingArg, ArgRC, Ty] =
3404
3390
CalleeArgInfo->getPreloadedValue(AMDGPUFunctionArgInfo::WORKITEM_ID_X);
3405
3391
if (!OutgoingArg)
3406
3392
std::tie(OutgoingArg, ArgRC, Ty) =
@@ -4460,15 +4446,13 @@ SITargetLowering::emitGWSMemViolTestLoop(MachineInstr &MI,
4460
4446
4461
4447
MachineRegisterInfo &MRI = BB->getParent()->getRegInfo();
4462
4448
4463
- MachineBasicBlock *LoopBB;
4464
- MachineBasicBlock *RemainderBB;
4465
4449
const SIInstrInfo *TII = getSubtarget()->getInstrInfo();
4466
4450
4467
4451
// Apparently kill flags are only valid if the def is in the same block?
4468
4452
if (MachineOperand *Src = TII->getNamedOperand(MI, AMDGPU::OpName::data0))
4469
4453
Src->setIsKill(false);
4470
4454
4471
- std::tie( LoopBB, RemainderBB) = splitBlockForLoop(MI, *BB, true);
4455
+ auto [ LoopBB, RemainderBB] = splitBlockForLoop(MI, *BB, true);
4472
4456
4473
4457
MachineBasicBlock::iterator I = LoopBB->end();
4474
4458
@@ -4628,9 +4612,7 @@ loadM0FromVGPR(const SIInstrInfo *TII, MachineBasicBlock &MBB, MachineInstr &MI,
4628
4612
.addReg(Exec);
4629
4613
// clang-format on
4630
4614
4631
- MachineBasicBlock *LoopBB;
4632
- MachineBasicBlock *RemainderBB;
4633
- std::tie(LoopBB, RemainderBB) = splitBlockForLoop(MI, MBB, false);
4615
+ auto [LoopBB, RemainderBB] = splitBlockForLoop(MI, MBB, false);
4634
4616
4635
4617
const MachineOperand *Idx = TII->getNamedOperand(MI, AMDGPU::OpName::idx);
4636
4618
@@ -5755,8 +5737,7 @@ SDValue SITargetLowering::splitUnaryVectorOp(SDValue Op,
5755
5737
VT == MVT::v16f16 || VT == MVT::v8f32 || VT == MVT::v16f32 ||
5756
5738
VT == MVT::v32f32 || VT == MVT::v32i16 || VT == MVT::v32f16);
5757
5739
5758
- SDValue Lo, Hi;
5759
- std::tie(Lo, Hi) = DAG.SplitVectorOperand(Op.getNode(), 0);
5740
+ auto [Lo, Hi] = DAG.SplitVectorOperand(Op.getNode(), 0);
5760
5741
5761
5742
SDLoc SL(Op);
5762
5743
SDValue OpLo = DAG.getNode(Opc, SL, Lo.getValueType(), Lo, Op->getFlags());
@@ -5776,10 +5757,8 @@ SDValue SITargetLowering::splitBinaryVectorOp(SDValue Op,
5776
5757
VT == MVT::v16f16 || VT == MVT::v8f32 || VT == MVT::v16f32 ||
5777
5758
VT == MVT::v32f32 || VT == MVT::v32i16 || VT == MVT::v32f16);
5778
5759
5779
- SDValue Lo0, Hi0;
5780
- std::tie(Lo0, Hi0) = DAG.SplitVectorOperand(Op.getNode(), 0);
5781
- SDValue Lo1, Hi1;
5782
- std::tie(Lo1, Hi1) = DAG.SplitVectorOperand(Op.getNode(), 1);
5760
+ auto [Lo0, Hi0] = DAG.SplitVectorOperand(Op.getNode(), 0);
5761
+ auto [Lo1, Hi1] = DAG.SplitVectorOperand(Op.getNode(), 1);
5783
5762
5784
5763
SDLoc SL(Op);
5785
5764
@@ -5802,15 +5781,13 @@ SDValue SITargetLowering::splitTernaryVectorOp(SDValue Op,
5802
5781
VT == MVT::v4bf16 || VT == MVT::v8bf16 || VT == MVT::v16bf16 ||
5803
5782
VT == MVT::v32bf16);
5804
5783
5805
- SDValue Lo0, Hi0;
5806
5784
SDValue Op0 = Op.getOperand(0);
5807
- std::tie(Lo0, Hi0) = Op0.getValueType().isVector()
5808
- ? DAG.SplitVectorOperand(Op.getNode(), 0)
5809
- : std::pair(Op0, Op0);
5810
- SDValue Lo1, Hi1;
5811
- std::tie(Lo1, Hi1) = DAG.SplitVectorOperand(Op.getNode(), 1);
5812
- SDValue Lo2, Hi2;
5813
- std::tie(Lo2, Hi2) = DAG.SplitVectorOperand(Op.getNode(), 2);
5785
+ auto [Lo0, Hi0] = Op0.getValueType().isVector()
5786
+ ? DAG.SplitVectorOperand(Op.getNode(), 0)
5787
+ : std::pair(Op0, Op0);
5788
+
5789
+ auto [Lo1, Hi1] = DAG.SplitVectorOperand(Op.getNode(), 1);
5790
+ auto [Lo2, Hi2] = DAG.SplitVectorOperand(Op.getNode(), 2);
5814
5791
5815
5792
SDLoc SL(Op);
5816
5793
auto ResVT = DAG.GetSplitDestVTs(VT);
@@ -7427,8 +7404,7 @@ SDValue SITargetLowering::lowerEXTRACT_VECTOR_ELT(SDValue Op,
7427
7404
7428
7405
if (VecSize == 128 || VecSize == 256 || VecSize == 512) {
7429
7406
SDValue Lo, Hi;
7430
- EVT LoVT, HiVT;
7431
- std::tie(LoVT, HiVT) = DAG.GetSplitDestVTs(VecVT);
7407
+ auto [LoVT, HiVT] = DAG.GetSplitDestVTs(VecVT);
7432
7408
7433
7409
if (VecSize == 128) {
7434
7410
SDValue V2 = DAG.getBitcast(MVT::v2i64, Vec);
@@ -10459,9 +10435,8 @@ SDValue SITargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
10459
10435
// size.
10460
10436
switch (Subtarget->getMaxPrivateElementSize()) {
10461
10437
case 4: {
10462
- SDValue Ops[2];
10463
- std::tie(Ops[0], Ops[1]) = scalarizeVectorLoad(Load, DAG);
10464
- return DAG.getMergeValues(Ops, DL);
10438
+ auto [Op0, Op1] = scalarizeVectorLoad(Load, DAG);
10439
+ return DAG.getMergeValues({Op0, Op1}, DL);
10465
10440
}
10466
10441
case 8:
10467
10442
if (NumElements > 2)
@@ -10493,9 +10468,8 @@ SDValue SITargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
10493
10468
10494
10469
if (!allowsMemoryAccessForAlignment(*DAG.getContext(), DAG.getDataLayout(),
10495
10470
MemVT, *Load->getMemOperand())) {
10496
- SDValue Ops[2];
10497
- std::tie(Ops[0], Ops[1]) = expandUnalignedLoad(Load, DAG);
10498
- return DAG.getMergeValues(Ops, DL);
10471
+ auto [Op0, Op1] = expandUnalignedLoad(Load, DAG);
10472
+ return DAG.getMergeValues({Op0, Op1}, DL);
10499
10473
}
10500
10474
10501
10475
return SDValue();
@@ -12534,8 +12508,7 @@ SDValue SITargetLowering::performOrCombine(SDNode *N,
12534
12508
EVT SrcVT = ExtSrc.getValueType();
12535
12509
if (SrcVT == MVT::i32) {
12536
12510
SDLoc SL(N);
12537
- SDValue LowLHS, HiBits;
12538
- std::tie(LowLHS, HiBits) = split64BitValue(LHS, DAG);
12511
+ auto [LowLHS, HiBits] = split64BitValue(LHS, DAG);
12539
12512
SDValue LowOr = DAG.getNode(ISD::OR, SL, MVT::i32, LowLHS, ExtSrc);
12540
12513
12541
12514
DCI.AddToWorklist(LowOr.getNode());
@@ -13870,8 +13843,7 @@ SDValue SITargetLowering::tryFoldToMad64_32(SDNode *N,
13870
13843
getMad64_32(DAG, SL, MVT::i64, MulLHSLo, MulRHSLo, AddRHS, MulSignedLo);
13871
13844
13872
13845
if (!MulSignedLo && (!MulLHSUnsigned32 || !MulRHSUnsigned32)) {
13873
- SDValue AccumLo, AccumHi;
13874
- std::tie(AccumLo, AccumHi) = DAG.SplitScalar(Accum, SL, MVT::i32, MVT::i32);
13846
+ auto [AccumLo, AccumHi] = DAG.SplitScalar(Accum, SL, MVT::i32, MVT::i32);
13875
13847
13876
13848
if (!MulLHSUnsigned32) {
13877
13849
auto MulLHSHi =
0 commit comments