public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
@ 2005-10-27 14:44 ` pinskia at gcc dot gnu dot org
2005-10-27 16:00 ` pluto at agmk dot net
` (8 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-10-27 14:44 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from pinskia at gcc dot gnu dot org 2005-10-27 14:44 -------
A regression from 3.4.x and 3.3.x.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail|4.1.0 |4.1.0 4.0.3
Known to work| |3.4.5 3.3.6
Summary|Wrong code generation using |[4.0/4.1 Regression] Wrong
|MMX intrinsics on amd64 |code generation using MMX
| |intrinsics on amd64
Target Milestone|--- |4.0.3
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
2005-10-27 14:44 ` [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64 pinskia at gcc dot gnu dot org
@ 2005-10-27 16:00 ` pluto at agmk dot net
2005-10-31 4:04 ` mmitchel at gcc dot gnu dot org
` (7 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: pluto at agmk dot net @ 2005-10-27 16:00 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from pluto at agmk dot net 2005-10-27 16:00 -------
With my patched gcc-4.1.0-20051019 the testcase works.
Applied patches: PR7776, PR20297, PR22429, PR22533, PR23948,
PR19505, PR20606, PR24069, PR24419, PR24172, PR24295, PR20928
[builder2@estel BUILD]$ gcc -Wall -O2 pr22432.c -S -march=x86-64
[builder2@estel BUILD]$ cat pr22432.s
.file "pr22432.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0: .string "pr22432.c"
.LC1: .string "a == 0xffffffff"
.section .rodata.cst8,"aM",@progbits,8
.align 8
.LC2: .long 269488144
.long 0
.align 8
.LC3: .long -1
.long 0
.text
.p2align 4,,15
.globl main
.type main, @function
main: pushl %ebp
movl %esp, %ebp
subl $56, %esp
leal -4(%ebp), %eax
andl $-16, %esp
subl $16, %esp
cmpl %ebp, %eax
jae .L9
movl $0, -24(%ebp)
movl $0, -20(%ebp)
movq -24(%ebp), %mm2
movq .LC2, %mm0
movq .LC3, %mm1
punpcklbw %mm2, %mm0
punpcklbw %mm2, %mm1
paddw %mm1, %mm0
packuswb %mm2, %mm0
movd %mm0, -28(%ebp)
emms
cmpl $-1, -28(%ebp)
jne .L10
leave
xorl %eax, %eax
ret
.L9: emms
leave
xorl %eax, %eax
ret
.L10: movl $__PRETTY_FUNCTION__.2544, 12(%esp)
movl $30, 8(%esp)
movl $.LC0, 4(%esp)
movl $.LC1, (%esp)
call __assert_fail
.size main, .-main
.section .rodata
.type __PRETTY_FUNCTION__.2544, @object
.size __PRETTY_FUNCTION__.2544, 5
__PRETTY_FUNCTION__.2544:
.string "main"
.ident "GCC: (GNU) 4.1.0 20051019 (experimental)"
.section .note.GNU-stack,"",@progbits
[builder2@estel BUILD]$ gcc -Wall -O2 pr22432.c -save-temps -march=x86-64
[builder2@estel BUILD]$ ./a.out ; echo $?
0
--
pluto at agmk dot net changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |pluto at agmk dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
2005-10-27 14:44 ` [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64 pinskia at gcc dot gnu dot org
2005-10-27 16:00 ` pluto at agmk dot net
@ 2005-10-31 4:04 ` mmitchel at gcc dot gnu dot org
2005-11-04 23:17 ` steven at gcc dot gnu dot org
` (6 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2005-10-31 4:04 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from mmitchel at gcc dot gnu dot org 2005-10-31 04:04 -------
This is a showstopper; wrong code on a primary platform.
--
mmitchel at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Priority|P2 |P1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (2 preceding siblings ...)
2005-10-31 4:04 ` mmitchel at gcc dot gnu dot org
@ 2005-11-04 23:17 ` steven at gcc dot gnu dot org
2005-11-04 23:26 ` steven at gcc dot gnu dot org
` (5 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-11-04 23:17 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from steven at gcc dot gnu dot org 2005-11-04 23:17 -------
In the .life1 dump we have:
(insn 41 38 42 2 (set (reg:V2SI 79 [ D.2609 ])
(subreg:V2SI (reg:V8QI 76) 0)) 998 {*movv2si_internal_rex64
(insn_list:REG_DEP_TRUE 32 (nil))
(expr_list:REG_DEAD (reg:V8QI 76)
(nil)))
(insn 42 41 43 2 (set (reg:V2SI 80 [ D.2619 ])
(subreg:V2SI (reg:V8QI 78) 0)) 998 {*movv2si_internal_rex64}
(insn_list:REG_DEP_TRUE 38 (nil))
(expr_list:REG_DEAD (reg:V8QI 78)
(nil)))
(insn 43 42 46 2 (set (reg:V4HI 81)
(plus:V4HI (subreg:V4HI (reg:V2SI 79 [ D.2609 ]) 0)
(subreg:V4HI (reg:V2SI 80 [ D.2619 ]) 0))) 1031 {mmx_addv4hi3}
(insn_list:REG_DEP_TRUE 41 (insn_list:REG_DEP_TRUE 42 (nil)))
(expr_list:REG_DEAD (reg:V2SI 79 [ D.2609 ])
(expr_list:REG_DEAD (reg:V2SI 80 [ D.2619 ])
(nil))))
After combine we have:
(note 41 38 42 2 NOTE_INSN_DELETED)
(note 42 41 43 2 NOTE_INSN_DELETED)
(insn 43 42 46 2 (set (reg:V8QI 81)
(plus:V8QI (reg:V8QI 76)
(reg:V8QI 78))) 1030 {mmx_addv8qi3}
(insn_list:REG_DEP_TRUE 38 (insn_list:REG_DEP_TRUE 32 (nil)))
(expr_list:REG_DEAD (reg:V8QI 78)
(expr_list:REG_DEAD (reg:V8QI 76)
(nil))))
Is that really the same???
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (3 preceding siblings ...)
2005-11-04 23:17 ` steven at gcc dot gnu dot org
@ 2005-11-04 23:26 ` steven at gcc dot gnu dot org
2005-11-04 23:27 ` ian at airs dot com
` (4 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: steven at gcc dot gnu dot org @ 2005-11-04 23:26 UTC (permalink / raw)
To: gcc-bugs
------- Comment #7 from steven at gcc dot gnu dot org 2005-11-04 23:26 -------
According to rth on IRC this is indeed absolutely wrong.
So it looks like we may have a combine bug here.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (4 preceding siblings ...)
2005-11-04 23:26 ` steven at gcc dot gnu dot org
@ 2005-11-04 23:27 ` ian at airs dot com
2005-11-05 1:00 ` ian at airs dot com
` (3 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: ian at airs dot com @ 2005-11-04 23:27 UTC (permalink / raw)
To: gcc-bugs
------- Comment #8 from ian at airs dot com 2005-11-04 23:27 -------
No, doing the add in v4hi mode is not the same as doing the add in v8qi mode.
The carry bits will be handled differently.
It's also rather odd that register 81 changed from V4HImode to V8QImode.
Normally a pseudo-register always has the same mode, and accessing it in a
different mode requires a subreg.
--
ian at airs dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ian at airs dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (5 preceding siblings ...)
2005-11-04 23:27 ` ian at airs dot com
@ 2005-11-05 1:00 ` ian at airs dot com
2005-11-06 5:34 ` ian at gcc dot gnu dot org
` (2 subsequent siblings)
9 siblings, 0 replies; 10+ messages in thread
From: ian at airs dot com @ 2005-11-05 1:00 UTC (permalink / raw)
To: gcc-bugs
------- Comment #9 from ian at airs dot com 2005-11-05 01:00 -------
Created an attachment (id=10151)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=10151&action=view)
Proposed patch
This patch fixes the problem. I'm running tests now.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (6 preceding siblings ...)
2005-11-05 1:00 ` ian at airs dot com
@ 2005-11-06 5:34 ` ian at gcc dot gnu dot org
2005-11-06 6:38 ` ian at gcc dot gnu dot org
2005-11-06 6:41 ` ian at airs dot com
9 siblings, 0 replies; 10+ messages in thread
From: ian at gcc dot gnu dot org @ 2005-11-06 5:34 UTC (permalink / raw)
To: gcc-bugs
------- Comment #10 from ian at gcc dot gnu dot org 2005-11-06 05:34 -------
Subject: Bug 22432
Author: ian
Date: Sun Nov 6 05:34:38 2005
New Revision: 106555
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=106555
Log:
./:
PR target/22432
* combine.c (apply_distributive_law): Don't distribute across a
vector mode subreg.
testsuite/:
PR target/22432
* gcc.target/i386/pr22432.c: New test.
Added:
trunk/gcc/testsuite/gcc.target/i386/pr22432.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/combine.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (7 preceding siblings ...)
2005-11-06 5:34 ` ian at gcc dot gnu dot org
@ 2005-11-06 6:38 ` ian at gcc dot gnu dot org
2005-11-06 6:41 ` ian at airs dot com
9 siblings, 0 replies; 10+ messages in thread
From: ian at gcc dot gnu dot org @ 2005-11-06 6:38 UTC (permalink / raw)
To: gcc-bugs
------- Comment #11 from ian at gcc dot gnu dot org 2005-11-06 06:38 -------
Subject: Bug 22432
Author: ian
Date: Sun Nov 6 06:38:14 2005
New Revision: 106556
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=106556
Log:
./:
PR target/22432
* combine.c (apply_distributive_law): Don't distribute across a
vector mode subreg.
testsuite/:
2005-11-05 Ian Lance Taylor <ian@airs.com>
PR target/22432
* gcc.target/i386/pr22432.c: New test.
Added:
branches/gcc-4_0-branch/gcc/testsuite/gcc.target/i386/pr22432.c
Modified:
branches/gcc-4_0-branch/gcc/ChangeLog
branches/gcc-4_0-branch/gcc/combine.c
branches/gcc-4_0-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
* [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
` (8 preceding siblings ...)
2005-11-06 6:38 ` ian at gcc dot gnu dot org
@ 2005-11-06 6:41 ` ian at airs dot com
9 siblings, 0 replies; 10+ messages in thread
From: ian at airs dot com @ 2005-11-06 6:41 UTC (permalink / raw)
To: gcc-bugs
------- Comment #12 from ian at airs dot com 2005-11-06 06:41 -------
Fixed for 4.0.3 and 4.1.
--
ian at airs dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22432
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2005-11-06 6:41 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <bug-22432-6237@http.gcc.gnu.org/bugzilla/>
2005-10-27 14:44 ` [Bug target/22432] [4.0/4.1 Regression] Wrong code generation using MMX intrinsics on amd64 pinskia at gcc dot gnu dot org
2005-10-27 16:00 ` pluto at agmk dot net
2005-10-31 4:04 ` mmitchel at gcc dot gnu dot org
2005-11-04 23:17 ` steven at gcc dot gnu dot org
2005-11-04 23:26 ` steven at gcc dot gnu dot org
2005-11-04 23:27 ` ian at airs dot com
2005-11-05 1:00 ` ian at airs dot com
2005-11-06 5:34 ` ian at gcc dot gnu dot org
2005-11-06 6:38 ` ian at gcc dot gnu dot org
2005-11-06 6:41 ` ian at airs dot com
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).