> Vladimir Makarov wrote:
> > On SPECINT2k performance is ~0.5% worse (5.5% regression on perlbmk), and
> > SPECFP is ~0.2% faster.
> Thanks for reporting this.  It is important for me as I have no aarch64
> machine for benchmarking.
> 
> Perlbmk performance degradation is too big and I'll definitely look at
> this problem.

Looking at the diffs in regexec.c which has the hot function regmatch(), 
nothing obvious stands out that could cause a serious regression.
I did notice this around line 2300:

.L802:
        ldr     x1, [x23, 48]
        adrp    x5, PL_savestack_ix
        ldr     w0, [x23]
        str     x5, [sp, 104]
        str     x1, [x24, #:lo12:PL_regcc]
        ldr     w27, [x1, 4]
        bl      regcppush
-       ldr     x5, [sp, 104]        
        str     w0, [sp, 112]
        ldr     x0, [x23, 32]
+       adrp    x5, PL_savestack_ix
        ldr     w28, [x5, #:lo12:PL_savestack_ix]
+       str     x5, [sp, 104]
        bl      regmatch
        ldr     x5, [sp, 104]
        mov     w19, w0
        ldr     w1, [sp, 112]
        ldr     w0, [x5, #:lo12:PL_savestack_ix]

So it rematerializes once instance, but fails to rematerialize the second use. 
An extra store is inserted, and the first adrp and store are not removed as 
dead.

Wilco


Reply via email to