|
@@ -725,9 +725,8 @@ void SelectionDAGISel::ComputeLiveOutVRegInfo() {
|
|
}
|
|
}
|
|
|
|
|
|
void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
- std::string GroupName;
|
|
|
|
- if (TimePassesIsEnabled)
|
|
|
|
- GroupName = "Instruction Selection and Scheduling";
|
|
|
|
|
|
+ StringRef GroupName = "sdag";
|
|
|
|
+ StringRef GroupDescription = "Instruction Selection and Scheduling";
|
|
std::string BlockName;
|
|
std::string BlockName;
|
|
int BlockNumber = -1;
|
|
int BlockNumber = -1;
|
|
(void)BlockNumber;
|
|
(void)BlockNumber;
|
|
@@ -755,7 +754,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
|
|
|
|
// Run the DAG combiner in pre-legalize mode.
|
|
// Run the DAG combiner in pre-legalize mode.
|
|
{
|
|
{
|
|
- NamedRegionTimer T("DAG Combining 1", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("combine1", "DAG Combining 1", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
CurDAG->Combine(BeforeLegalizeTypes, *AA, OptLevel);
|
|
CurDAG->Combine(BeforeLegalizeTypes, *AA, OptLevel);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -769,7 +769,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
|
|
|
|
bool Changed;
|
|
bool Changed;
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Type Legalization", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("legalize_types", "Type Legalization", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
Changed = CurDAG->LegalizeTypes();
|
|
Changed = CurDAG->LegalizeTypes();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -784,8 +785,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
|
|
|
|
// Run the DAG combiner in post-type-legalize mode.
|
|
// Run the DAG combiner in post-type-legalize mode.
|
|
{
|
|
{
|
|
- NamedRegionTimer T("DAG Combining after legalize types", GroupName,
|
|
|
|
- TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("combine_lt", "DAG Combining after legalize types",
|
|
|
|
+ GroupName, GroupDescription, TimePassesIsEnabled);
|
|
CurDAG->Combine(AfterLegalizeTypes, *AA, OptLevel);
|
|
CurDAG->Combine(AfterLegalizeTypes, *AA, OptLevel);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -795,13 +796,15 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
}
|
|
}
|
|
|
|
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Vector Legalization", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("legalize_vec", "Vector Legalization", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
Changed = CurDAG->LegalizeVectors();
|
|
Changed = CurDAG->LegalizeVectors();
|
|
}
|
|
}
|
|
|
|
|
|
if (Changed) {
|
|
if (Changed) {
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Type Legalization 2", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("legalize_types2", "Type Legalization 2", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
CurDAG->LegalizeTypes();
|
|
CurDAG->LegalizeTypes();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -810,8 +813,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
|
|
|
|
// Run the DAG combiner in post-type-legalize mode.
|
|
// Run the DAG combiner in post-type-legalize mode.
|
|
{
|
|
{
|
|
- NamedRegionTimer T("DAG Combining after legalize vectors", GroupName,
|
|
|
|
- TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("combine_lv", "DAG Combining after legalize vectors",
|
|
|
|
+ GroupName, GroupDescription, TimePassesIsEnabled);
|
|
CurDAG->Combine(AfterLegalizeVectorOps, *AA, OptLevel);
|
|
CurDAG->Combine(AfterLegalizeVectorOps, *AA, OptLevel);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -823,7 +826,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
CurDAG->viewGraph("legalize input for " + BlockName);
|
|
CurDAG->viewGraph("legalize input for " + BlockName);
|
|
|
|
|
|
{
|
|
{
|
|
- NamedRegionTimer T("DAG Legalization", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("legalize", "DAG Legalization", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
CurDAG->Legalize();
|
|
CurDAG->Legalize();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -835,7 +839,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
|
|
|
|
// Run the DAG combiner in post-legalize mode.
|
|
// Run the DAG combiner in post-legalize mode.
|
|
{
|
|
{
|
|
- NamedRegionTimer T("DAG Combining 2", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("combine2", "DAG Combining 2", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
CurDAG->Combine(AfterLegalizeDAG, *AA, OptLevel);
|
|
CurDAG->Combine(AfterLegalizeDAG, *AA, OptLevel);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -851,7 +856,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
// Third, instruction select all of the operations to machine code, adding the
|
|
// Third, instruction select all of the operations to machine code, adding the
|
|
// code to the MachineBasicBlock.
|
|
// code to the MachineBasicBlock.
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Instruction Selection", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("isel", "Instruction Selection", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
DoInstructionSelection();
|
|
DoInstructionSelection();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -864,8 +870,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
// Schedule machine code.
|
|
// Schedule machine code.
|
|
ScheduleDAGSDNodes *Scheduler = CreateScheduler();
|
|
ScheduleDAGSDNodes *Scheduler = CreateScheduler();
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Instruction Scheduling", GroupName,
|
|
|
|
- TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("sched", "Instruction Scheduling", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
Scheduler->Run(CurDAG, FuncInfo->MBB);
|
|
Scheduler->Run(CurDAG, FuncInfo->MBB);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -876,7 +882,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
// inserted into.
|
|
// inserted into.
|
|
MachineBasicBlock *FirstMBB = FuncInfo->MBB, *LastMBB;
|
|
MachineBasicBlock *FirstMBB = FuncInfo->MBB, *LastMBB;
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Instruction Creation", GroupName, TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("emit", "Instruction Creation", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
|
|
|
|
// FuncInfo->InsertPt is passed by reference and set to the end of the
|
|
// FuncInfo->InsertPt is passed by reference and set to the end of the
|
|
// scheduled instructions.
|
|
// scheduled instructions.
|
|
@@ -890,8 +897,8 @@ void SelectionDAGISel::CodeGenAndEmitDAG() {
|
|
|
|
|
|
// Free the scheduler state.
|
|
// Free the scheduler state.
|
|
{
|
|
{
|
|
- NamedRegionTimer T("Instruction Scheduling Cleanup", GroupName,
|
|
|
|
- TimePassesIsEnabled);
|
|
|
|
|
|
+ NamedRegionTimer T("cleanup", "Instruction Scheduling Cleanup", GroupName,
|
|
|
|
+ GroupDescription, TimePassesIsEnabled);
|
|
delete Scheduler;
|
|
delete Scheduler;
|
|
}
|
|
}
|
|
|
|
|