@@ -426,10 +426,10 @@ class GlobalISelEmitter final : public GlobalISelMatchTableExecutorEmitter {
426
426
const TreePatternNode &N,
427
427
action_iterator &InsertPt) const ;
428
428
429
- Expected<action_iterator>
430
- importExplicitUseRenderer (action_iterator InsertPt, RuleMatcher &Rule ,
431
- BuildMIAction &DstMIBuilder,
432
- const TreePatternNode &Dst) const ;
429
+ Error importNodeRenderer (RuleMatcher &M, BuildMIAction &MIBuilder,
430
+ const TreePatternNode &N ,
431
+ action_iterator &InsertPt) const ;
432
+
433
433
Error importDefaultOperandRenderers (action_iterator InsertPt, RuleMatcher &M,
434
434
BuildMIAction &DstMIBuilder,
435
435
const DAGDefaultOperand &DefaultOp) const ;
@@ -1388,36 +1388,25 @@ Error GlobalISelEmitter::importInstructionNodeRenderer(
1388
1388
return Error::success ();
1389
1389
}
1390
1390
1391
- Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderer (
1392
- action_iterator InsertPt, RuleMatcher &Rule, BuildMIAction &DstMIBuilder,
1393
- const TreePatternNode &Dst) const {
1394
- if (Dst.hasName ()) {
1395
- if (Error Err = importNamedNodeRenderer (Rule, DstMIBuilder, Dst))
1396
- return Err;
1397
- return InsertPt;
1398
- }
1391
+ // Equivalent of MatcherGen::EmitResultOperand.
1392
+ Error GlobalISelEmitter::importNodeRenderer (RuleMatcher &M,
1393
+ BuildMIAction &MIBuilder,
1394
+ const TreePatternNode &N,
1395
+ action_iterator &InsertPt) const {
1396
+ if (N.hasName ())
1397
+ return importNamedNodeRenderer (M, MIBuilder, N);
1399
1398
1400
- if (Dst.isLeaf ()) {
1401
- if (Error Err = importLeafNodeRenderer (Rule, DstMIBuilder, Dst))
1402
- return Err;
1403
- return InsertPt;
1404
- }
1399
+ if (N.isLeaf ())
1400
+ return importLeafNodeRenderer (M, MIBuilder, N);
1405
1401
1406
- if (Dst.getOperator ()->isSubClassOf (" SDNodeXForm" )) {
1407
- if (Error Err = importXFormNodeRenderer (Rule, DstMIBuilder, Dst))
1408
- return Err;
1409
- return InsertPt;
1410
- }
1402
+ if (N.getOperator ()->isSubClassOf (" SDNodeXForm" ))
1403
+ return importXFormNodeRenderer (M, MIBuilder, N);
1411
1404
1412
- if (Dst.getOperator ()->isSubClassOf (" Instruction" )) {
1413
- if (Error Err =
1414
- importInstructionNodeRenderer (Rule, DstMIBuilder, Dst, InsertPt))
1415
- return Err;
1416
- return InsertPt;
1417
- }
1405
+ if (N.getOperator ()->isSubClassOf (" Instruction" ))
1406
+ return importInstructionNodeRenderer (M, MIBuilder, N, InsertPt);
1418
1407
1419
1408
// Should not reach here.
1420
- return failedImport (" unrecognized node " + llvm::to_string (Dst ));
1409
+ return failedImport (" unrecognized node " + llvm::to_string (N ));
1421
1410
}
1422
1411
1423
1412
// / Generates code that builds the resulting instruction(s) from the destination
@@ -1671,11 +1660,9 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
1671
1660
dyn_cast<DefInit>(SubRegChild.getLeafValue ())) {
1672
1661
CodeGenSubRegIndex *SubIdx = CGRegs.getSubRegIdx (SubRegInit->getDef ());
1673
1662
1674
- auto InsertPtOrError =
1675
- importExplicitUseRenderer (InsertPt, M, DstMIBuilder, ValChild);
1676
- if (auto Error = InsertPtOrError.takeError ())
1677
- return std::move (Error);
1678
- InsertPt = InsertPtOrError.get ();
1663
+ if (Error Err = importNodeRenderer (M, DstMIBuilder, ValChild, InsertPt))
1664
+ return Err;
1665
+
1679
1666
DstMIBuilder.addRenderer <SubRegIndexRenderer>(SubIdx);
1680
1667
}
1681
1668
}
@@ -1740,11 +1727,10 @@ Expected<action_iterator> GlobalISelEmitter::importExplicitUseRenderers(
1740
1727
continue ;
1741
1728
}
1742
1729
1743
- auto InsertPtOrError = importExplicitUseRenderer (InsertPt, M, DstMIBuilder,
1744
- Dst.getChild (Child));
1745
- if (auto Error = InsertPtOrError.takeError ())
1746
- return std::move (Error);
1747
- InsertPt = InsertPtOrError.get ();
1730
+ if (Error Err =
1731
+ importNodeRenderer (M, DstMIBuilder, Dst.getChild (Child), InsertPt))
1732
+ return Err;
1733
+
1748
1734
++Child;
1749
1735
}
1750
1736
0 commit comments