Profile Picture
Shun Kamatsuka

Software Engineering...
Fujitsu Limited
Standard Ticket

Talks

MAD24-418 Software Pipelining Support for AArch64 in LLVM

  • Friday, 17 May 12:05 - 12:30
  • Room: Session 2 | Tenerife I

Software Pipelining is a loop optimization technique that schedules instructions across iterations to increase instruction-level parallelism. We have been working on MachinePipeliner pass, an implementation of Software Pipelining in LLVM. We have already completed basic support for AArch64. In Neoverse V1, we observed that Software Pipelining improves performance for several cases where instructions within the target loop have long dependency chains. The results suggest that Software Pipelining is effective for such loops, even in modern OoO processors. Some of our patches have been merged and Software Pipelining for AArch64 is already available in the main branch. However, these patches are not the only end of our goal. We think of that there is various room for improvement in MachinePipeliner. For example, we must provide user interfaces to apply Software Pipelining like pragma. We will continue to contribute MachinePipeliner. This session will provide the details of our development and performance improvement