public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used.
@ 2013-08-09 12:38 neleai at seznam dot cz
2013-08-09 12:39 ` [Bug target/58110] " neleai at seznam dot cz
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: neleai at seznam dot cz @ 2013-08-09 12:38 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110
Bug ID: 58110
Summary: Useless GPR push and pop when only xmm registers are
used.
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: neleai at seznam dot cz
Hi,attached code generates extra push/pop rbx pair while there is no gpr
register assigned in segment between them.
This was generated by head xgcc -O3. A gcc-4.7 has similar issues with attached
program.
pushq %rbx
.cfi_def_cfa_offset 16
.cfi_offset 3, -16
movdqu (%rsi), %xmm15
movdqu -16(%rsi,%rdx), %xmm14
movdqu 16(%rsi), %xmm13
movdqu -32(%rsi,%rdx), %xmm12
movdqu 32(%rsi), %xmm11
movdqu -48(%rsi,%rdx), %xmm10
movdqu 48(%rsi), %xmm9
movdqu -64(%rsi,%rdx), %xmm8
movdqu 64(%rsi), %xmm7
movdqu -80(%rsi,%rdx), %xmm6
movdqu 80(%rsi), %xmm5
movdqu -96(%rsi,%rdx), %xmm4
movdqu 96(%rsi), %xmm3
movdqu -112(%rsi,%rdx), %xmm2
movdqu 112(%rsi), %xmm1
movdqu -128(%rsi,%rdx), %xmm0
movdqu %xmm15, (%rdi)
movdqu %xmm14, -16(%rdi,%rdx)
movdqu %xmm13, 16(%rdi)
movdqu %xmm12, -32(%rdi,%rdx)
movdqu %xmm11, 32(%rdi)
movdqu %xmm10, -48(%rdi,%rdx)
movdqu %xmm9, 48(%rdi)
movdqu %xmm8, -64(%rdi,%rdx)
movdqu %xmm7, 64(%rdi)
movdqu %xmm6, -80(%rdi,%rdx)
movdqu %xmm5, 80(%rdi)
movdqu %xmm4, -96(%rdi,%rdx)
movdqu %xmm3, 96(%rdi)
movdqu %xmm2, -112(%rdi,%rdx)
movdqu %xmm1, 112(%rdi)
movdqu %xmm0, -128(%rdi,%rdx)
popq %rbx
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/58110] Useless GPR push and pop when only xmm registers are used.
2013-08-09 12:38 [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used neleai at seznam dot cz
@ 2013-08-09 12:39 ` neleai at seznam dot cz
2013-08-09 13:52 ` hubicka at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: neleai at seznam dot cz @ 2013-08-09 12:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110
--- Comment #1 from Ondrej Bilka <neleai at seznam dot cz> ---
Created attachment 30627
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30627&action=edit
testcase
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/58110] Useless GPR push and pop when only xmm registers are used.
2013-08-09 12:38 [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used neleai at seznam dot cz
2013-08-09 12:39 ` [Bug target/58110] " neleai at seznam dot cz
@ 2013-08-09 13:52 ` hubicka at gcc dot gnu.org
2013-08-09 19:02 ` vmakarov at redhat dot com
2021-09-12 2:39 ` pinskia at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: hubicka at gcc dot gnu.org @ 2013-08-09 13:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110
Jan Hubicka <hubicka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-08-09
CC| |hubicka at gcc dot gnu.org,
| |vmakarov at redhat dot com
Ever confirmed|0 |1
Severity|normal |enhancement
--- Comment #2 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
Here BX is used after reload for:
(insn 118 116 119 9 (parallel [
(set (reg:DI 3 bx [orig:111 D.4408 ] [111])
(plus:DI (reg/v:DI 1 dx [orig:242 n ] [242])
(const_int -16 [0xfffffffffffffff0])))
(clobber (reg:CC 17 flags))
]) memcpy.c:96 249 {*adddi_1}
(nil))
...
(insn 120 119 122 9 (set (reg:V16QI 51 xmm14 [281])
(unspec:V16QI [
(mem:V16QI (plus:DI (reg/v/f:DI 4 si [orig:241 src ] [241])
(reg:DI 3 bx [orig:111 D.4408 ] [111])) [0 S16 A8])
] UNSPEC_LOADU))
/usr/lib64/gcc/x86_64-suse-linux/4.7/include/emmintrin.h:685 1107
{sse2_loaddqu}
(nil))
...
(insn 175 173 178 9 (set (mem:V16QI (plus:DI (reg/v/f:DI 0 ax [orig:240 dest ]
[240])
(reg:DI 3 bx [orig:111 D.4408 ] [111])) [0 S16 A8])
(unspec:V16QI [
(reg:V16QI 51 xmm14 [281])
] UNSPEC_STOREU))
/usr/lib64/gcc/x86_64-suse-linux/4.7/include/emmintrin.h:703 1109
{sse2_storedqu}
(nil))
....
and this gets updated by postrealod to
(insn 120 119 122 9 (set (reg:V16QI 51 xmm14 [281])
(unspec:V16QI [
(mem:V16QI (plus:DI (plus:DI (reg/v/f:DI 4 si [orig:241 src ]
[241])
(reg/v:DI 1 dx [orig:242 n ] [242]))
(const_int -16 [0xfffffffffffffff0])) [0 S16 A8])
] UNSPEC_LOADU))
/usr/lib64/gcc/x86_64-suse-linux/4.7/include/emmintrin.h:685 1107
{sse2_loaddqu}
(nil))
So RBX become unused.
Vladimir, perhaps you can take a look?
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/58110] Useless GPR push and pop when only xmm registers are used.
2013-08-09 12:38 [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used neleai at seznam dot cz
2013-08-09 12:39 ` [Bug target/58110] " neleai at seznam dot cz
2013-08-09 13:52 ` hubicka at gcc dot gnu.org
@ 2013-08-09 19:02 ` vmakarov at redhat dot com
2021-09-12 2:39 ` pinskia at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: vmakarov at redhat dot com @ 2013-08-09 19:02 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110
--- Comment #3 from Vladimir Makarov <vmakarov at redhat dot com> ---
Thanks, Ondrej and Jan. GCC with reload generates code with the same problem.
I mentioned on RA BOF that we should look at postreload.c and postreload-gcse.c
to figure out what should and can be removed as redundant and what can be
integrated with IRA/LRA. This PR is just a good illustration of why it should
be done.
I don't think this work will be done soon but it is good to have the PR to
remember this.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug target/58110] Useless GPR push and pop when only xmm registers are used.
2013-08-09 12:38 [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used neleai at seznam dot cz
` (2 preceding siblings ...)
2013-08-09 19:02 ` vmakarov at redhat dot com
@ 2021-09-12 2:39 ` pinskia at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-09-12 2:39 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58110
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|NEW |RESOLVED
Target Milestone|--- |7.0
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Fixed by LRA in GCC 7.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-09-12 2:39 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-09 12:38 [Bug target/58110] New: Useless GPR push and pop when only xmm registers are used neleai at seznam dot cz
2013-08-09 12:39 ` [Bug target/58110] " neleai at seznam dot cz
2013-08-09 13:52 ` hubicka at gcc dot gnu.org
2013-08-09 19:02 ` vmakarov at redhat dot com
2021-09-12 2:39 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).