[Bug target/67288] [9/10/11/12 regression] non optimal simple function (useless additional shift/remove/shift/add)

2021-07-14 Thread segher at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288

--- Comment #23 from Segher Boessenkool  ---
-m32 is required here.  With -fno-unroll-loops -m32 you now get

flush_dcache_range:
rlwinm 3,3,0,0,27
addi 4,4,15
subf 4,3,4
srwi. 4,4,4
beqlr 0
mtctr 4
.p2align 4,,15
.L3:
dcbf 0, 3
addi 3,3,16
bdnz .L3
sync
blr

So yup, it has been fixed.  Thanks!

[Bug target/67288] [9/10/11/12 regression] non optimal simple function (useless additional shift/remove/shift/add)

2021-07-13 Thread guojiufu at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288

Jiu Fu Guo  changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution|--- |FIXED
 CC||guojiufu at gcc dot gnu.org

--- Comment #22 from Jiu Fu Guo  ---
 (In reply to Segher Boessenkool from comment #4)
> It's not fixed.  On trunk we get:
> 
> ===
> flush_dcache_range:
> rlwinm 3,3,0,0,27
> addi 4,4,15
> subf 4,3,4
> srwi. 9,4,4
> beq 0,.L1
> slwi 9,9,4
> addi 9,9,-16
> srwi 9,9,4
> addi 9,9,1
> mtctr 9
> .p2align 4,,15
> .L3:
> dcbf 0, 3
> addi 3,3,16
> bdnz .L3
> sync
> .L1:
> blr
> ===
> 
> (-m32, edited a bit).
> 
> The slwi/addi/srwi/addi is unnecessary.

With the latest trunk (which contains
https://gcc.gnu.org/g:8a15faa730f99100f6f3ed12663563356ec5a2c0)
The asm code is:

.cfi_startproc
rldicr %r3,%r3,0,59
addi %r9,%r4,15
subf %r9,%r3,%r9
srwi %r9,%r9,4
cmpwi %cr0,%r9,0
beqlr %cr0
rldicl %r9,%r9,0,32
mtctr %r9
.p2align 4,,15
.L3:
dcbf 0, %r3
addi %r3,%r3,16
bdnz .L3
sync
blr

[Bug target/67288] [9/10/11/12 regression] non optimal simple function (useless additional shift/remove/shift/add)

2021-06-01 Thread rguenth at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|9.4 |9.5

--- Comment #21 from Richard Biener  ---
GCC 9.4 is being released, retargeting bugs to GCC 9.5.

[Bug target/67288] [9/10/11/12 regression] non optimal simple function (useless additional shift/remove/shift/add)

2021-05-14 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67288

Jakub Jelinek  changed:

   What|Removed |Added

   Target Milestone|8.5 |9.4

--- Comment #20 from Jakub Jelinek  ---
GCC 8 branch is being closed.