[llvm] 92d3672 - [MachineOutliner] Improve mapper statistics
Jessica Paquette via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 3 22:27:43 PST 2023
Author: Jessica Paquette
Date: 2023-02-03T22:27:21-08:00
New Revision: 92d3672452db260f431b9219faf57c5f8c7b876b
URL: https://github.com/llvm/llvm-project/commit/92d3672452db260f431b9219faf57c5f8c7b876b
DIFF: https://github.com/llvm/llvm-project/commit/92d3672452db260f431b9219faf57c5f8c7b876b.diff
LOG: [MachineOutliner] Improve mapper statistics
Add a test for statistics as well.
The mapper size stats were nested in a loop unnecessarily. Move them out.
Give existing stats better names, and add one which also tracks the number of
sentinels added.
Added:
llvm/test/CodeGen/AArch64/machine-outliner-mapper-stats.mir
Modified:
llvm/lib/CodeGen/MachineOutliner.cpp
Removed:
################################################################################
diff --git a/llvm/lib/CodeGen/MachineOutliner.cpp b/llvm/lib/CodeGen/MachineOutliner.cpp
index ef6069255dfb..856b9bfb40bc 100644
--- a/llvm/lib/CodeGen/MachineOutliner.cpp
+++ b/llvm/lib/CodeGen/MachineOutliner.cpp
@@ -89,11 +89,14 @@ STATISTIC(NumOutlined, "Number of candidates outlined");
STATISTIC(FunctionsCreated, "Number of functions created");
// Statistics for instruction mapping.
-STATISTIC(NumLegalInUnsignedVec, "Number of legal instrs in unsigned vector");
+STATISTIC(NumLegalInUnsignedVec, "Outlinable instructions mapped");
STATISTIC(NumIllegalInUnsignedVec,
- "Number of illegal instrs in unsigned vector");
-STATISTIC(NumInvisible, "Number of invisible instrs in unsigned vector");
-STATISTIC(UnsignedVecSize, "Size of unsigned vector");
+ "Unoutlinable instructions mapped + number of sentinel values");
+STATISTIC(NumSentinels, "Sentinel values inserted during mapping");
+STATISTIC(NumInvisible,
+ "Invisible instructions skipped during mapping");
+STATISTIC(UnsignedVecSize,
+ "Total number of instructions mapped and saved to mapping vector");
// Set to true if the user wants the outliner to run on linkonceodr linkage
// functions. This is false by default because the linker can dedupe linkonceodr
@@ -361,6 +364,7 @@ struct InstructionMapper {
// repeated substring.
mapToIllegalUnsigned(It, CanOutlineWithPrevInstr, UnsignedVecForMBB,
InstrListForMBB);
+ ++NumSentinels;
append_range(InstrList, InstrListForMBB);
append_range(UnsignedVec, UnsignedVecForMBB);
}
@@ -1005,10 +1009,9 @@ void MachineOutliner::populateMapper(InstructionMapper &Mapper, Module &M,
// MBB is suitable for outlining. Map it to a list of unsigneds.
Mapper.convertToUnsignedVec(MBB, *TII);
}
-
- // Statistics.
- UnsignedVecSize = Mapper.UnsignedVec.size();
}
+ // Statistics.
+ UnsignedVecSize = Mapper.UnsignedVec.size();
}
void MachineOutliner::initSizeRemarkInfo(
diff --git a/llvm/test/CodeGen/AArch64/machine-outliner-mapper-stats.mir b/llvm/test/CodeGen/AArch64/machine-outliner-mapper-stats.mir
new file mode 100644
index 000000000000..4cb8e8c10c24
--- /dev/null
+++ b/llvm/test/CodeGen/AArch64/machine-outliner-mapper-stats.mir
@@ -0,0 +1,26 @@
+# RUN: llc -mtriple aarch64 -stats -run-pass=machine-outliner -verify-machineinstrs %s -o /dev/null 2>&1 | FileCheck %s
+# REQUIRES: asserts
+
+# CHECK: 2 machine-outliner - Unoutlinable instructions mapped + number of sentinel values
+# CHECK: 2 machine-outliner - Invisible instructions skipped during mapping
+# CHECK: 4 machine-outliner - Outlinable instructions mapped
+# CHECK: 1 machine-outliner - Sentinel values inserted during mapping
+# CHECK: 5 machine-outliner - Total number of instructions mapped and saved to mapping vector
+
+...
+---
+name: foo
+tracksRegLiveness: true
+machineFunctionInfo:
+ hasRedZone: false
+body: |
+ bb.0:
+ liveins: $w0, $lr, $w8, $w30
+ $lr = ORRXri $lr, 4
+ $w17 = ORRWri $wzr, 1
+ $w17 = ORRWri $wzr, 1
+ $w0 = ORRWri $wzr, 4
+ bb.2:
+ DBG_VALUE $x0, 0
+ DBG_VALUE $x0, 0
+ RET undef $lr
More information about the llvm-commits
mailing list