[llvm] [llvm][CodeGen] Add a new software pipeliner 'Window Scheduler' (PR #84443)

Hua Tian via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 25 01:19:49 PDT 2024


================
@@ -199,6 +199,9 @@ class TargetSubtargetInfo : public MCSubtargetInfo {
   /// True if the subtarget should run MachinePipeliner
   virtual bool enableMachinePipeliner() const { return true; };
 
+  /// True if the subtarget should run WindowScheduler.
+  virtual bool enableWindowScheduler() const { return true; }
----------------
huaatian wrote:

Over the past few days, we have specifically tested the performance of the Software Pipeliner on aarch64. The test hardware and software environment is as follows: Apple M1 Pro 32GB, Docker 25.0.3, Ubuntu 22.04.4 LTS, GCC 11.4.0, and SPEC2006 1.2. We ran 11 integer benchmarks in ref mode, each 5 times. The final result shows that the base performance is 51.2, and the performance with software pipelining enabled is 51.0, which are almost the same.
Although this result is strongly related to the local test conditions, we believe the relative results are credible. This is because there are very few loops in SPEC that meet the criteria for applying software pipelining, and even fewer loops with long computation times (which aligns with the original design intention of SPEC, "Computer Architecture: A Quantitative Approach" 1.11). Therefore, we still believe that the software pipelining algorithm should play a major role in DSP or DSA.

https://github.com/llvm/llvm-project/pull/84443


More information about the llvm-commits mailing list