On Mon, 15 May 2023 10:59:11 GMT, Andrew Haley <a...@openjdk.org> wrote:

> > > This looks like it might be removed by loop opts. I think you might need 
> > > a blackhole somewhere.
> > 
> > 
> > `m` will be updated in every iteration of this loop, so `m` is not a 
> > loop-invariants actually. I can see the assembly code of this loop by using 
> > JMH perfasm.
> 
> Isn't it? Looks to me like all it does is flip `m` each time. Whether or not 
> this code is optimized today isn't relevant.
> 
> So it's the same as
> 
> ```
>         for (int i = 0; i < LENGTH/2; i++) {
>             res += m.trueCount();
>         }
>         m = m.not();
>         for (int i = 0; i < LENGTH/2; i++) {
>             res += m.trueCount();
>         } 
> ```
> 
> ... which is trivially optimizable, no?

Sorry for the delay.

Yes, actually they do the same thing, though current C2 compiler cannot do such 
optimization so far. Anyway, I have updated this benchmark to avoid potential 
optimization and ensure that we can measure performance effectively.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13974#discussion_r1197626911

Reply via email to