@@ -393,28 +393,30 @@ class GlobalISelEmitter final : public GlobalISelMatchTableExecutorEmitter {
393393 bool OperandIsAPointer, bool OperandIsImmArg,
394394 unsigned OpIdx, unsigned &TempOpIdx);
395395
396- Expected<BuildMIAction &> createAndImportInstructionRenderer (
397- RuleMatcher &M, InstructionMatcher &InsnMatcher,
398- const TreePatternNode &Src, const TreePatternNode &Dst);
396+ Expected<BuildMIAction &>
397+ createAndImportInstructionRenderer (RuleMatcher &M,
398+ InstructionMatcher &InsnMatcher,
399+ const TreePatternNode &Dst);
399400 Expected<action_iterator> createAndImportSubInstructionRenderer (
400401 action_iterator InsertPt, RuleMatcher &M, const TreePatternNode &Dst,
401- const TreePatternNode &Src, unsigned TempReg);
402+ unsigned TempReg);
402403 Expected<action_iterator>
403404 createInstructionRenderer (action_iterator InsertPt, RuleMatcher &M,
404405 const TreePatternNode &Dst);
405406
406407 Expected<action_iterator>
407408 importExplicitDefRenderers (action_iterator InsertPt, RuleMatcher &M,
408409 BuildMIAction &DstMIBuilder,
409- const TreePatternNode &Src,
410410 const TreePatternNode &Dst, unsigned Start = 0 );
411411
412- Expected<action_iterator> importExplicitUseRenderers (
413- action_iterator InsertPt, RuleMatcher &M, BuildMIAction &DstMIBuilder,
414- const llvm::TreePatternNode &Dst, const TreePatternNode &Src);
415- Expected<action_iterator> importExplicitUseRenderer (
416- action_iterator InsertPt, RuleMatcher &Rule, BuildMIAction &DstMIBuilder,
417- const TreePatternNode &DstChild, const TreePatternNode &Src);
412+ Expected<action_iterator>
413+ importExplicitUseRenderers (action_iterator InsertPt, RuleMatcher &M,
414+ BuildMIAction &DstMIBuilder,
415+ const TreePatternNode &Dst);
416+ Expected<action_iterator>
417+ importExplicitUseRenderer (action_iterator InsertPt, RuleMatcher &Rule,
418+ BuildMIAction &DstMIBuilder,
419+ const TreePatternNode &Dst);
418420 Error importDefaultOperandRenderers (action_iterator InsertPt, RuleMatcher &M,
419421 BuildMIAction &DstMIBuilder,
420422 const DAGDefaultOperand &DefaultOp) const ;
@@ -1196,23 +1198,22 @@ Error GlobalISelEmitter::importChildMatcher(
11961198
11971199Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer (
11981200 action_iterator InsertPt, RuleMatcher &Rule, BuildMIAction &DstMIBuilder,
1199- const TreePatternNode &DstChild, const TreePatternNode &Src ) {
1201+ const TreePatternNode &Dst ) {
12001202
1201- const auto &SubOperand = Rule.getComplexSubOperand (DstChild .getName ());
1203+ const auto &SubOperand = Rule.getComplexSubOperand (Dst .getName ());
12021204 if (SubOperand) {
12031205 DstMIBuilder.addRenderer <RenderComplexPatternOperand>(
1204- *std::get<0 >(*SubOperand), DstChild .getName (), std::get<1 >(*SubOperand),
1206+ *std::get<0 >(*SubOperand), Dst .getName (), std::get<1 >(*SubOperand),
12051207 std::get<2 >(*SubOperand));
12061208 return InsertPt;
12071209 }
12081210
1209- if (!DstChild .isLeaf ()) {
1210- if (DstChild .getOperator ()->isSubClassOf (" SDNodeXForm" )) {
1211- auto &Child = DstChild .getChild (0 );
1212- auto I = SDNodeXFormEquivs.find (DstChild .getOperator ());
1211+ if (!Dst .isLeaf ()) {
1212+ if (Dst .getOperator ()->isSubClassOf (" SDNodeXForm" )) {
1213+ auto &Child = Dst .getChild (0 );
1214+ auto I = SDNodeXFormEquivs.find (Dst .getOperator ());
12131215 if (I != SDNodeXFormEquivs.end ()) {
1214- const Record *XFormOpc =
1215- DstChild.getOperator ()->getValueAsDef (" Opcode" );
1216+ const Record *XFormOpc = Dst.getOperator ()->getValueAsDef (" Opcode" );
12161217 if (XFormOpc->getName () == " timm" ) {
12171218 // If this is a TargetConstant, there won't be a corresponding
12181219 // instruction to transform. Instead, this will refer directly to an
@@ -1231,10 +1232,10 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
12311232
12321233 // We accept 'bb' here. It's an operator because BasicBlockSDNode isn't
12331234 // inline, but in MI it's just another operand.
1234- if (DstChild .getOperator ()->isSubClassOf (" SDNode" )) {
1235- auto &ChildSDNI = CGP.getSDNodeInfo (DstChild .getOperator ());
1235+ if (Dst .getOperator ()->isSubClassOf (" SDNode" )) {
1236+ auto &ChildSDNI = CGP.getSDNodeInfo (Dst .getOperator ());
12361237 if (ChildSDNI.getSDClassName () == " BasicBlockSDNode" ) {
1237- DstMIBuilder.addRenderer <CopyRenderer>(DstChild .getName ());
1238+ DstMIBuilder.addRenderer <CopyRenderer>(Dst .getName ());
12381239 return InsertPt;
12391240 }
12401241 }
@@ -1243,26 +1244,25 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
12431244 // rendered as operands.
12441245 // FIXME: The target should be able to choose sign-extended when appropriate
12451246 // (e.g. on Mips).
1246- if (DstChild .getOperator ()->getName () == " timm" ) {
1247- DstMIBuilder.addRenderer <CopyRenderer>(DstChild .getName ());
1247+ if (Dst .getOperator ()->getName () == " timm" ) {
1248+ DstMIBuilder.addRenderer <CopyRenderer>(Dst .getName ());
12481249 return InsertPt;
12491250 }
1250- if (DstChild .getOperator ()->getName () == " tframeindex" ) {
1251- DstMIBuilder.addRenderer <CopyRenderer>(DstChild .getName ());
1251+ if (Dst .getOperator ()->getName () == " tframeindex" ) {
1252+ DstMIBuilder.addRenderer <CopyRenderer>(Dst .getName ());
12521253 return InsertPt;
12531254 }
1254- if (DstChild .getOperator ()->getName () == " imm" ) {
1255- DstMIBuilder.addRenderer <CopyConstantAsImmRenderer>(DstChild .getName ());
1255+ if (Dst .getOperator ()->getName () == " imm" ) {
1256+ DstMIBuilder.addRenderer <CopyConstantAsImmRenderer>(Dst .getName ());
12561257 return InsertPt;
12571258 }
1258- if (DstChild.getOperator ()->getName () == " fpimm" ) {
1259- DstMIBuilder.addRenderer <CopyFConstantAsFPImmRenderer>(
1260- DstChild.getName ());
1259+ if (Dst.getOperator ()->getName () == " fpimm" ) {
1260+ DstMIBuilder.addRenderer <CopyFConstantAsFPImmRenderer>(Dst.getName ());
12611261 return InsertPt;
12621262 }
12631263
1264- if (DstChild .getOperator ()->isSubClassOf (" Instruction" )) {
1265- auto OpTy = getInstResultType (DstChild , Target);
1264+ if (Dst .getOperator ()->isSubClassOf (" Instruction" )) {
1265+ auto OpTy = getInstResultType (Dst , Target);
12661266 if (!OpTy)
12671267 return OpTy.takeError ();
12681268
@@ -1272,29 +1272,28 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
12721272 DstMIBuilder.addRenderer <TempRegRenderer>(TempRegID);
12731273
12741274 auto InsertPtOrError = createAndImportSubInstructionRenderer (
1275- ++InsertPt, Rule, DstChild, Src , TempRegID);
1275+ ++InsertPt, Rule, Dst , TempRegID);
12761276 if (auto Error = InsertPtOrError.takeError ())
12771277 return std::move (Error);
12781278 return InsertPtOrError.get ();
12791279 }
12801280
12811281 return failedImport (" Dst pattern child isn't a leaf node or an MBB" +
1282- llvm::to_string (DstChild ));
1282+ llvm::to_string (Dst ));
12831283 }
12841284
12851285 // It could be a specific immediate in which case we should just check for
12861286 // that immediate.
1287- if (const IntInit *ChildIntInit =
1288- dyn_cast<IntInit>(DstChild.getLeafValue ())) {
1287+ if (const IntInit *ChildIntInit = dyn_cast<IntInit>(Dst.getLeafValue ())) {
12891288 DstMIBuilder.addRenderer <ImmRenderer>(ChildIntInit->getValue ());
12901289 return InsertPt;
12911290 }
12921291
12931292 // Otherwise, we're looking for a bog-standard RegisterClass operand.
1294- if (auto *ChildDefInit = dyn_cast<DefInit>(DstChild .getLeafValue ())) {
1293+ if (auto *ChildDefInit = dyn_cast<DefInit>(Dst .getLeafValue ())) {
12951294 auto *ChildRec = ChildDefInit->getDef ();
12961295
1297- ArrayRef<TypeSetByHwMode> ChildTypes = DstChild .getExtTypes ();
1296+ ArrayRef<TypeSetByHwMode> ChildTypes = Dst .getExtTypes ();
12981297 if (ChildTypes.size () != 1 )
12991298 return failedImport (" Dst pattern child has multiple results" );
13001299
@@ -1315,11 +1314,11 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
13151314 if (ChildRec->isSubClassOf (" RegisterOperand" ) &&
13161315 !ChildRec->isValueUnset (" GIZeroRegister" )) {
13171316 DstMIBuilder.addRenderer <CopyOrAddZeroRegRenderer>(
1318- DstChild .getName (), ChildRec->getValueAsDef (" GIZeroRegister" ));
1317+ Dst .getName (), ChildRec->getValueAsDef (" GIZeroRegister" ));
13191318 return InsertPt;
13201319 }
13211320
1322- DstMIBuilder.addRenderer <CopyRenderer>(DstChild .getName ());
1321+ DstMIBuilder.addRenderer <CopyRenderer>(Dst .getName ());
13231322 return InsertPt;
13241323 }
13251324
@@ -1335,9 +1334,9 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
13351334 return failedImport (
13361335 " SelectionDAG ComplexPattern not mapped to GlobalISel" );
13371336
1338- const OperandMatcher &OM = Rule.getOperandMatcher (DstChild .getName ());
1337+ const OperandMatcher &OM = Rule.getOperandMatcher (Dst .getName ());
13391338 DstMIBuilder.addRenderer <RenderComplexPatternOperand>(
1340- *ComplexPattern->second , DstChild .getName (),
1339+ *ComplexPattern->second , Dst .getName (),
13411340 OM.getAllocatedTemporariesBaseID ());
13421341 return InsertPt;
13431342 }
@@ -1348,16 +1347,15 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer(
13481347
13491348 // Handle the case where the MVT/register class is omitted in the dest pattern
13501349 // but MVT exists in the source pattern.
1351- if (isa<UnsetInit>(DstChild.getLeafValue ()) &&
1352- Rule.hasOperand (DstChild.getName ())) {
1353- DstMIBuilder.addRenderer <CopyRenderer>(DstChild.getName ());
1350+ if (isa<UnsetInit>(Dst.getLeafValue ()) && Rule.hasOperand (Dst.getName ())) {
1351+ DstMIBuilder.addRenderer <CopyRenderer>(Dst.getName ());
13541352 return InsertPt;
13551353 }
13561354 return failedImport (" Dst pattern child is an unsupported kind" );
13571355}
13581356
13591357Expected<BuildMIAction &> GlobalISelEmitter::createAndImportInstructionRenderer (
1360- RuleMatcher &M, InstructionMatcher &InsnMatcher, const TreePatternNode &Src,
1358+ RuleMatcher &M, InstructionMatcher &InsnMatcher,
13611359 const TreePatternNode &Dst) {
13621360 auto InsertPtOrError = createInstructionRenderer (M.actions_end (), M, Dst);
13631361 if (auto Error = InsertPtOrError.takeError ())
@@ -1377,23 +1375,21 @@ Expected<BuildMIAction &> GlobalISelEmitter::createAndImportInstructionRenderer(
13771375 CopyToPhysRegMIBuilder.addRenderer <CopyPhysRegRenderer>(PhysInput.first );
13781376 }
13791377
1380- if (auto Error =
1381- importExplicitDefRenderers (InsertPt, M, DstMIBuilder, Src, Dst)
1382- .takeError ())
1378+ if (auto Error = importExplicitDefRenderers (InsertPt, M, DstMIBuilder, Dst)
1379+ .takeError ())
13831380 return std::move (Error);
13841381
1385- if (auto Error =
1386- importExplicitUseRenderers (InsertPt, M, DstMIBuilder, Dst, Src)
1387- .takeError ())
1382+ if (auto Error = importExplicitUseRenderers (InsertPt, M, DstMIBuilder, Dst)
1383+ .takeError ())
13881384 return std::move (Error);
13891385
13901386 return DstMIBuilder;
13911387}
13921388
13931389Expected<action_iterator>
13941390GlobalISelEmitter::createAndImportSubInstructionRenderer (
1395- const action_iterator InsertPt, RuleMatcher &M, const TreePatternNode &Dst,
1396- const TreePatternNode &Src, unsigned TempRegID) {
1391+ action_iterator InsertPt, RuleMatcher &M, const TreePatternNode &Dst,
1392+ unsigned TempRegID) {
13971393 auto InsertPtOrError = createInstructionRenderer (InsertPt, M, Dst);
13981394
13991395 // TODO: Assert there's exactly one result.
@@ -1408,13 +1404,13 @@ GlobalISelEmitter::createAndImportSubInstructionRenderer(
14081404 DstMIBuilder.addRenderer <TempRegRenderer>(TempRegID, true );
14091405
14101406 // Handle additional (ignored) results.
1411- InsertPtOrError = importExplicitDefRenderers (
1412- std::prev (*InsertPtOrError), M, DstMIBuilder, Src , Dst, /* Start=*/ 1 );
1407+ InsertPtOrError = importExplicitDefRenderers (std::prev (*InsertPtOrError), M,
1408+ DstMIBuilder , Dst, /* Start=*/ 1 );
14131409 if (auto Error = InsertPtOrError.takeError ())
14141410 return std::move (Error);
14151411
1416- InsertPtOrError = importExplicitUseRenderers (InsertPtOrError. get (), M,
1417- DstMIBuilder, Dst, Src );
1412+ InsertPtOrError =
1413+ importExplicitUseRenderers (InsertPtOrError. get (), M, DstMIBuilder, Dst);
14181414 if (auto Error = InsertPtOrError.takeError ())
14191415 return std::move (Error);
14201416
@@ -1448,7 +1444,7 @@ Expected<action_iterator> GlobalISelEmitter::createInstructionRenderer(
14481444
14491445Expected<action_iterator> GlobalISelEmitter::importExplicitDefRenderers (
14501446 action_iterator InsertPt, RuleMatcher &M, BuildMIAction &DstMIBuilder,
1451- const TreePatternNode &Src, const TreePatternNode & Dst, unsigned Start) {
1447+ const TreePatternNode &Dst, unsigned Start) {
14521448 const CodeGenInstruction *DstI = DstMIBuilder.getCGI ();
14531449
14541450 // Some instructions have multiple defs, but are missing a type entry
@@ -1497,7 +1493,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitDefRenderers(
14971493
14981494Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers (
14991495 action_iterator InsertPt, RuleMatcher &M, BuildMIAction &DstMIBuilder,
1500- const llvm:: TreePatternNode &Dst, const llvm::TreePatternNode &Src ) {
1496+ const TreePatternNode &Dst) {
15011497 const CodeGenInstruction *DstI = DstMIBuilder.getCGI ();
15021498 CodeGenInstruction *OrigDstI = &Target.getInstruction (Dst.getOperator ());
15031499
@@ -1527,7 +1523,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
15271523 TempRegID);
15281524
15291525 auto InsertPtOrError = createAndImportSubInstructionRenderer (
1530- ++InsertPt, M, ValChild, Src, TempRegID);
1526+ ++InsertPt, M, ValChild, TempRegID);
15311527 if (auto Error = InsertPtOrError.takeError ())
15321528 return std::move (Error);
15331529
@@ -1585,7 +1581,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
15851581 CodeGenSubRegIndex *SubIdx = CGRegs.getSubRegIdx (SubRegInit->getDef ());
15861582
15871583 auto InsertPtOrError =
1588- importExplicitUseRenderer (InsertPt, M, DstMIBuilder, ValChild, Src );
1584+ importExplicitUseRenderer (InsertPt, M, DstMIBuilder, ValChild);
15891585 if (auto Error = InsertPtOrError.takeError ())
15901586 return std::move (Error);
15911587 InsertPt = InsertPtOrError.get ();
@@ -1654,7 +1650,7 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
16541650 }
16551651
16561652 auto InsertPtOrError = importExplicitUseRenderer (InsertPt, M, DstMIBuilder,
1657- Dst.getChild (Child), Src );
1653+ Dst.getChild (Child));
16581654 if (auto Error = InsertPtOrError.takeError ())
16591655 return std::move (Error);
16601656 InsertPt = InsertPtOrError.get ();
@@ -2135,7 +2131,7 @@ Expected<RuleMatcher> GlobalISelEmitter::runOnPattern(const PatternToMatch &P) {
21352131 }
21362132
21372133 auto DstMIBuilderOrError =
2138- createAndImportInstructionRenderer (M, InsnMatcher, Src, Dst);
2134+ createAndImportInstructionRenderer (M, InsnMatcher, Dst);
21392135 if (auto Error = DstMIBuilderOrError.takeError ())
21402136 return std::move (Error);
21412137 BuildMIAction &DstMIBuilder = DstMIBuilderOrError.get ();
0 commit comments