Skip to content

Commit 4cf1285

Browse files
authored
[NFC][AMDGPU] Use C++17 structured bindings as much as possible (#113939)
This only changes `llvm/lib/Target/AMDGPU/SIISelLowering.cpp`. There are five uses of `std::tie` remaining because they can't be replaced with C++17 structured bindings.
1 parent 31a6dbe commit 4cf1285

File tree

1 file changed

+22
-50
lines changed

1 file changed

+22
-50
lines changed

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 22 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1948,13 +1948,9 @@ SDValue SITargetLowering::lowerKernArgParameterPtr(SelectionDAG &DAG,
19481948
const DataLayout &DL = DAG.getDataLayout();
19491949
MachineFunction &MF = DAG.getMachineFunction();
19501950
const SIMachineFunctionInfo *Info = MF.getInfo<SIMachineFunctionInfo>();
1951-
1952-
const ArgDescriptor *InputPtrReg;
1953-
const TargetRegisterClass *RC;
1954-
LLT ArgTy;
19551951
MVT PtrVT = getPointerTy(DL, AMDGPUAS::CONSTANT_ADDRESS);
19561952

1957-
std::tie(InputPtrReg, RC, ArgTy) =
1953+
auto [InputPtrReg, RC, ArgTy] =
19581954
Info->getPreloadedValue(AMDGPUFunctionArgInfo::KERNARG_SEGMENT_PTR);
19591955

19601956
// We may not have the kernarg segment argument if we have no kernel
@@ -3335,25 +3331,18 @@ void SITargetLowering::passSpecialInputs(
33353331
// clang-format on
33363332

33373333
for (auto Attr : ImplicitAttrs) {
3338-
const ArgDescriptor *OutgoingArg;
3339-
const TargetRegisterClass *ArgRC;
3340-
LLT ArgTy;
3341-
33423334
AMDGPUFunctionArgInfo::PreloadedValue InputID = Attr.first;
33433335

33443336
// If the callee does not use the attribute value, skip copying the value.
33453337
if (CLI.CB->hasFnAttr(Attr.second))
33463338
continue;
33473339

3348-
std::tie(OutgoingArg, ArgRC, ArgTy) =
3340+
const auto [OutgoingArg, ArgRC, ArgTy] =
33493341
CalleeArgInfo->getPreloadedValue(InputID);
33503342
if (!OutgoingArg)
33513343
continue;
33523344

3353-
const ArgDescriptor *IncomingArg;
3354-
const TargetRegisterClass *IncomingArgRC;
3355-
LLT Ty;
3356-
std::tie(IncomingArg, IncomingArgRC, Ty) =
3345+
const auto [IncomingArg, IncomingArgRC, Ty] =
33573346
CallerArgInfo.getPreloadedValue(InputID);
33583347
assert(IncomingArgRC == ArgRC);
33593348

@@ -3396,11 +3385,8 @@ void SITargetLowering::passSpecialInputs(
33963385

33973386
// Pack workitem IDs into a single register or pass it as is if already
33983387
// packed.
3399-
const ArgDescriptor *OutgoingArg;
3400-
const TargetRegisterClass *ArgRC;
3401-
LLT Ty;
34023388

3403-
std::tie(OutgoingArg, ArgRC, Ty) =
3389+
auto [OutgoingArg, ArgRC, Ty] =
34043390
CalleeArgInfo->getPreloadedValue(AMDGPUFunctionArgInfo::WORKITEM_ID_X);
34053391
if (!OutgoingArg)
34063392
std::tie(OutgoingArg, ArgRC, Ty) =
@@ -4460,15 +4446,13 @@ SITargetLowering::emitGWSMemViolTestLoop(MachineInstr &MI,
44604446

44614447
MachineRegisterInfo &MRI = BB->getParent()->getRegInfo();
44624448

4463-
MachineBasicBlock *LoopBB;
4464-
MachineBasicBlock *RemainderBB;
44654449
const SIInstrInfo *TII = getSubtarget()->getInstrInfo();
44664450

44674451
// Apparently kill flags are only valid if the def is in the same block?
44684452
if (MachineOperand *Src = TII->getNamedOperand(MI, AMDGPU::OpName::data0))
44694453
Src->setIsKill(false);
44704454

4471-
std::tie(LoopBB, RemainderBB) = splitBlockForLoop(MI, *BB, true);
4455+
auto [LoopBB, RemainderBB] = splitBlockForLoop(MI, *BB, true);
44724456

44734457
MachineBasicBlock::iterator I = LoopBB->end();
44744458

@@ -4628,9 +4612,7 @@ loadM0FromVGPR(const SIInstrInfo *TII, MachineBasicBlock &MBB, MachineInstr &MI,
46284612
.addReg(Exec);
46294613
// clang-format on
46304614

4631-
MachineBasicBlock *LoopBB;
4632-
MachineBasicBlock *RemainderBB;
4633-
std::tie(LoopBB, RemainderBB) = splitBlockForLoop(MI, MBB, false);
4615+
auto [LoopBB, RemainderBB] = splitBlockForLoop(MI, MBB, false);
46344616

46354617
const MachineOperand *Idx = TII->getNamedOperand(MI, AMDGPU::OpName::idx);
46364618

@@ -5755,8 +5737,7 @@ SDValue SITargetLowering::splitUnaryVectorOp(SDValue Op,
57555737
VT == MVT::v16f16 || VT == MVT::v8f32 || VT == MVT::v16f32 ||
57565738
VT == MVT::v32f32 || VT == MVT::v32i16 || VT == MVT::v32f16);
57575739

5758-
SDValue Lo, Hi;
5759-
std::tie(Lo, Hi) = DAG.SplitVectorOperand(Op.getNode(), 0);
5740+
auto [Lo, Hi] = DAG.SplitVectorOperand(Op.getNode(), 0);
57605741

57615742
SDLoc SL(Op);
57625743
SDValue OpLo = DAG.getNode(Opc, SL, Lo.getValueType(), Lo, Op->getFlags());
@@ -5776,10 +5757,8 @@ SDValue SITargetLowering::splitBinaryVectorOp(SDValue Op,
57765757
VT == MVT::v16f16 || VT == MVT::v8f32 || VT == MVT::v16f32 ||
57775758
VT == MVT::v32f32 || VT == MVT::v32i16 || VT == MVT::v32f16);
57785759

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);
57835762

57845763
SDLoc SL(Op);
57855764

@@ -5802,15 +5781,13 @@ SDValue SITargetLowering::splitTernaryVectorOp(SDValue Op,
58025781
VT == MVT::v4bf16 || VT == MVT::v8bf16 || VT == MVT::v16bf16 ||
58035782
VT == MVT::v32bf16);
58045783

5805-
SDValue Lo0, Hi0;
58065784
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);
58145791

58155792
SDLoc SL(Op);
58165793
auto ResVT = DAG.GetSplitDestVTs(VT);
@@ -7427,8 +7404,7 @@ SDValue SITargetLowering::lowerEXTRACT_VECTOR_ELT(SDValue Op,
74277404

74287405
if (VecSize == 128 || VecSize == 256 || VecSize == 512) {
74297406
SDValue Lo, Hi;
7430-
EVT LoVT, HiVT;
7431-
std::tie(LoVT, HiVT) = DAG.GetSplitDestVTs(VecVT);
7407+
auto [LoVT, HiVT] = DAG.GetSplitDestVTs(VecVT);
74327408

74337409
if (VecSize == 128) {
74347410
SDValue V2 = DAG.getBitcast(MVT::v2i64, Vec);
@@ -10459,9 +10435,8 @@ SDValue SITargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
1045910435
// size.
1046010436
switch (Subtarget->getMaxPrivateElementSize()) {
1046110437
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);
1046510440
}
1046610441
case 8:
1046710442
if (NumElements > 2)
@@ -10493,9 +10468,8 @@ SDValue SITargetLowering::LowerLOAD(SDValue Op, SelectionDAG &DAG) const {
1049310468

1049410469
if (!allowsMemoryAccessForAlignment(*DAG.getContext(), DAG.getDataLayout(),
1049510470
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);
1049910473
}
1050010474

1050110475
return SDValue();
@@ -12534,8 +12508,7 @@ SDValue SITargetLowering::performOrCombine(SDNode *N,
1253412508
EVT SrcVT = ExtSrc.getValueType();
1253512509
if (SrcVT == MVT::i32) {
1253612510
SDLoc SL(N);
12537-
SDValue LowLHS, HiBits;
12538-
std::tie(LowLHS, HiBits) = split64BitValue(LHS, DAG);
12511+
auto [LowLHS, HiBits] = split64BitValue(LHS, DAG);
1253912512
SDValue LowOr = DAG.getNode(ISD::OR, SL, MVT::i32, LowLHS, ExtSrc);
1254012513

1254112514
DCI.AddToWorklist(LowOr.getNode());
@@ -13870,8 +13843,7 @@ SDValue SITargetLowering::tryFoldToMad64_32(SDNode *N,
1387013843
getMad64_32(DAG, SL, MVT::i64, MulLHSLo, MulRHSLo, AddRHS, MulSignedLo);
1387113844

1387213845
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);
1387513847

1387613848
if (!MulLHSUnsigned32) {
1387713849
auto MulLHSHi =

0 commit comments

Comments
 (0)