This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Nov 7 16:12, Wilco Dijkstra wrote: > Corinna Vinschen wrote: > > Wilco Dijkstra wrote: > > > > And it works with -O2 if you split off the p++ in the increment part of the for. > > > > No, it doesn't. I retried with your style of for loop, but there's > > simply no difference for me. -O2, -O3, pure/ not-pure, with f++ split > > off or not, it's always taking the same time on average. > > That's odd - maybe pure2 doesn't get correctly defined in your environment. I get this > using your unchanged benchmark with -O3 - it clearly lifts the call: > > ldrb w19, [x20] > add x20, x20, 1 > cbz w19, .L3 > stp x22, x23, [sp, 40] > bl __locale_ctype_ptr > adrp x23, .LC0 > mov x22, x0 > add x23, x23, :lo12:.LC0 > .p2align 3 > .L4: > add x19, x22, x19, uxtb > ldrb w0, [x19, 1] > tbnz x0, 4, .L20 > ldrb w19, [x20], 1 > cbnz w19, .L4 > > What is the disassembly of your version? The loop is the same, with and without __pure2: .L4: addq $1, %rsi .L3: movsbq (%rsi), %rbx testb %bl, %bl je .L23 call __locale_ctype_ptr testb $16, 1(%rax,%rbx) je .L4 movq %r13, %rcx call puts jmp .L4 And yes, I made sure __pure2 has been evaluated correctly: # 69 "/usr/include/ctype.h" 3 4 const char *__locale_ctype_ptr (void) __attribute__((__const__)); Corinna -- Corinna Vinschen Cygwin Maintainer Red Hat
Attachment:
signature.asc
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |