Request for reviews (XS): 7192964: assert(false) failed: bad AD file
Vladimir Kozlov
vladimir.kozlov at oracle.com
Tue Aug 21 14:17:51 PDT 2012
Thank you, Kris
I wish you become official Reviewer soon :)
Krystal Mo wrote:
>
> Hi Vladimir,
>
> Looks good to me. Some minor comments below:
>
> superword.cpp, line 1058,
>
> It wasn't immediately obvious to me why
>
> in_bb(p0->in(2))
>
> makes the shift's count a loop variant.
> Let's see if my understanding is correct: It relies on the fact that
> SuperWord::_bb is the entire loop body and there's no control flow in
> it, so that, if a value is produced outside this basic block, it must be
> loop invariant.
That is correct. We vectorize only unrolled "main" counted loops which have only
one exit at the end. So all data nodes between loop->head() and loop->tail()
(CountedLoopNode and CountedLoopEndNode nodes) which have loop's head as
associated control (PhaseIdealLoop::get_ctrl(n) == loop->head()) are considered
inside loop and could be vectorized. in_bb() means "in basic block".
>
> I'm okay with the change as-is, but it'd be better is this kind of usage
> is factored out into a helper function with comments.
I will leave renaming and factoring for later. I have 3 others vectors bugs to
fix today :)
>
> P.S. (Not directly related to this change)
> Reading through the code, there are two occurrences of a typo in
> vectornode.cpp, line 183 and 185, "invarient" -> invariant. Could that
> be fixed as well?
Done.
Thanks,
Vladimir
>
> Regards,
> Kris
>
> On 08/22/2012 02:29 AM, Vladimir Kozlov wrote:
>> http://cr.openjdk.java.net/~kvn/7192964/webrev
>>
>> 7192964: assert(false) failed: bad AD file
>>
>> Shifts with loop variant counts "a[i]=1<<b[i];" should not be
>> vectorized since hw does not support it.
>>
>> Thanks,
>> Vladimir
>
More information about the hotspot-compiler-dev
mailing list