RFR(M): 8223051: support loops with long (64b) trip counts
Roland Westrelin
rwestrel at redhat.com
Thu Aug 20 12:51:42 UTC 2020
Hi John,
> I’m going over it one more time (between smoky breaths from
> the California fires) and I have a question. What is the exact
> structure of outer_phi?
Thanks for taking another look at this.
> 1. At first it is a clone of phi, its region patched and the other edges the same:
>
> outer_phi := Phi(outer_head, init, AddL(phi, stride))
It's only a clone so:
outer_phi := Phi(outer_head, init, AddI(phi, stride))
(that is no AddL)
> 2. After long_loop_replace_long_iv, the interior phi links it back to itself:
>
> outer_phi := Phi(outer_head, init, AddL(AddL(inner_phi, outer_phi), stride))
I don't think that's right. There are 2 calls to
long_loop_replace_long_iv(). One to replace phi and the other one to
replace incr (that is the AddI above).
outer_phi := Phi(outer_head, init, AddL(I2L(AddI(inner_phi, stride)), outer_phi))
(actually this is not quite accurate because peeling one iteration
causes an extra phi to be added to merge the peeled iteration with the
counted loop in most cases).
Do you see a problem with the above outer_phi structure?
Roland.
More information about the hotspot-compiler-dev
mailing list