RFR(S): 8154135: Loop alignment may be added inside the loop body
Christian Thalinger
christian.thalinger at oracle.com
Thu Apr 14 18:15:53 UTC 2016
> On Apr 13, 2016, at 8:46 PM, Roland Westrelin <rwestrel at redhat.com> wrote:
>
>
> When running scimark on aarch64:
>
> ;; B16: # B17 <- B21 top-of-loop Freq: 2305.21
>
> 0x000003ffa126f710: add w17, w11, w12 ;*iadd {reexecute=0 rethrow=0 return_oop=0}
> ; - jnt.scimark2.FFT::transform_internal at 243 (line 129)
>
> 0x000003ffa126f714: nop
> 0x000003ffa126f718: nop
> 0x000003ffa126f71c: nop ;*iconst_2 {reexecute=0 rethrow=0 return_oop=0}
> ; - jnt.scimark2.FFT::transform_internal at 238 (line 129)
>
> ;; B17: # B32 B18 <- B25 B16 Loop: B17-B16 inner Freq: 3056.06
>
> 0x000003ffa126f720: lsl w16, w17, #1 ;*imul {reexecute=0 rethrow=0 return_oop=0}
> ; - jnt.scimark2.FFT::transform_internal at 244 (line 129)
>
> The 3 nops are added by the code that aligns loop entries: the top of
> loop block is first encountered and its alignment is set, the loop head
> is later encountered through the backbranch of an outer loop and its
> alignment is set.
>
> I propose that the code that aligns loop entries verifies that a loop
> top doesn't exist before it sets the alignment:
>
> http://cr.openjdk.java.net/~roland/8154135/webrev.00/
I wonder if this has any performance implications (good or bad). This alignment is not aarch64 specific so we were doing it all the time.
>
> Roland.
More information about the hotspot-compiler-dev
mailing list