[PATCH] D18864: [SystemZ] Support conditional sibling calls via BRCL.

Marcin Koƛcielnicki via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 7 12:52:37 PDT 2016


koriakin added a comment.

This is the third patch for issue #23417 - direct conditional sibling calls.  Compare and branch instructions are of no use here, as they have limitted reach.  This is not as useful as I hoped, as it usually only triggers for calls without parameters - eg. for f3 in the attached test, IfCvt bails on the llhi instruction loading the parameter, even after I make all the IsIfCvt*Profitable functions always return true.

I'll also submit a 4th patch for indirect conditional sibling calls, but these are even more limitted, since the transformation only triggers if the function to call is already in %r1 (otherwise, the unpredicable load disturbs IfCvt).  I was also considering adding a plain BCR instruction as a predicated variant of BR for switches, but since switches always (?) have the address arithmetic instructions between value-in-range check and indirect jump, it'd be rather useless.


Repository:
  rL LLVM

http://reviews.llvm.org/D18864





More information about the llvm-commits mailing list