[PATCH] D18900: New pre-isel pass SystemZBRCTLoops

Jonas Paulsson via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 8 08:08:34 PDT 2016


jonpa created this revision.
jonpa added reviewers: hfinkel, uweigand.
jonpa added a subscriber: llvm-commits.
Herald added a subscriber: sanjoy.

I experimented with making a new pass for the improved generation of BRCT loops for SystemZ. This is based on PPCCTRLoops.cpp.

Results:
Number of brct's on SPEC:
w/out patch: 4752
w/out patch, unrolled: 1367
w/ patch: 8743
w/ patch, unrolled: 11518 (new prologue loops increase the number)

gcc with unrolling generates 20864 brct's, so this result is an improvement, although not necessarily near optimal.

This seemed necessary in order to activate the loop-unroller and tune it properly, otherwise a loop might get unrolled but the BRCT and some performance will be lost.

http://reviews.llvm.org/D18900

Files:
  include/llvm/IR/IntrinsicsSystemZ.td
  lib/Target/SystemZ/CMakeLists.txt
  lib/Target/SystemZ/SystemZ.h
  lib/Target/SystemZ/SystemZBRCTLoops.cpp
  lib/Target/SystemZ/SystemZInstrInfo.td
  lib/Target/SystemZ/SystemZTargetMachine.cpp
  lib/Target/SystemZ/out.s
  test/CodeGen/SystemZ/loop-brct.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D18900.53025.patch
Type: text/x-patch
Size: 15746 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160408/dd84b7d4/attachment.bin>


More information about the llvm-commits mailing list