public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/21981] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
@ 2005-06-09 14:16 ` pinskia at gcc dot gnu dot org
  2005-06-09 16:14 ` gcc-bugzilla at gcc dot gnu dot org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-06-09 14:16 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From pinskia at gcc dot gnu dot org  2005-06-09 14:16 -------
Confirmed, ICC returns it in %mm0.
Note this is the testcase which I used:
#include <mmintrin.h>

__m64
aaa (__m64 x, __m64 y)
{
  __m64 mm1;
  mm1 = _mm_add_pi8 (x, y);
  return mm1;
}

int main() {
    __m64 mm0;
    __m64 mm1;
  union ttt {
    __m64 mm;
    char x[8];
  } temp;

  temp.mm = aaa (mm0, mm1);
  printf ("%i\n", temp.x[0]);

  return 0;
}

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
           Keywords|                            |wrong-code
   Last reconfirmed|0000-00-00 00:00:00         |2005-06-09 14:16:35
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
  2005-06-09 14:16 ` [Bug target/21981] __m64 return value should be returned in %mm0 pinskia at gcc dot gnu dot org
@ 2005-06-09 16:14 ` gcc-bugzilla at gcc dot gnu dot org
  2005-06-10 12:12 ` uros at kss-loka dot si
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: gcc-bugzilla at gcc dot gnu dot org @ 2005-06-09 16:14 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From gcc-bugzilla at gcc dot gnu dot org  2005-06-09 16:11 -------
Subject:  New: __m64 return value should  be returned in %mm0

Calling convetions for x86 specify that __m64 values should be returned in %mm0 
MMX register [1]. Gcc returns __m64 values on stack.

The testcase:

--cut here--
#include <mmintrin.h>

__v8qi
aaa (__v8qi x, __v8qi y)
{
  __v8qi mm1;

  mm1 = _mm_add_pi8 (x, y);

  return mm1;
}

int main() {
  __v8qi mm0 = { 1,2,3,4,5,6,7,8 };
  __v8qi mm1 = { 11,12,13,14,15,16,17,18 };

  union ttt {
    __v8qi mm;
    char x[8];
  } temp;

  temp.mm = aaa (mm0, mm1);
  printf ("%i\n", temp.x[0]);

  return 0;
}
--cut here--

will produce:

aaa:
	pushl	%ebp
	movl	%esp, %ebp
	movl	8(%ebp), %eax
	paddb	%mm1, %mm0
	movq	%mm0, (%eax)   <<<<-- %mm0 goes to memory
	popl	%ebp
	ret	$4

main:
	pushl	%ebp
	movl	%esp, %ebp
	subl	$24, %esp
	andl	$-16, %esp
	subl	$16, %esp
	leal	-8(%ebp), %eax
	movl	%eax, (%esp)
	movq	.LC0, %mm1
	movq	.LC1, %mm0
	call	aaa
	movsbl	-8(%ebp),%eax    <<<<-- return value taken from memory
	subl	$4, %esp
	movl	%eax, 4(%esp)
	movl	$.LC2, (%esp)
	call	printf
	xorl	%eax, %eax
	leave
	ret


[1] http://www.agner.org/assem/calling_conventions.pdf

-- 
           Summary: __m64 return value should  be returned in %mm0
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: uros at kss-loka dot si
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
  2005-06-09 14:16 ` [Bug target/21981] __m64 return value should be returned in %mm0 pinskia at gcc dot gnu dot org
  2005-06-09 16:14 ` gcc-bugzilla at gcc dot gnu dot org
@ 2005-06-10 12:12 ` uros at kss-loka dot si
  2005-06-10 21:45 ` cvs-commit at gcc dot gnu dot org
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: uros at kss-loka dot si @ 2005-06-10 12:12 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |uros at kss-loka dot si
                   |dot org                     |
                URL|                            |http://gcc.gnu.org/ml/gcc-
                   |                            |patches/2005-
                   |                            |06/msg00953.html
             Status|NEW                         |ASSIGNED
   Last reconfirmed|2005-06-09 14:16:35         |2005-06-10 12:12:31
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
                   ` (2 preceding siblings ...)
  2005-06-10 12:12 ` uros at kss-loka dot si
@ 2005-06-10 21:45 ` cvs-commit at gcc dot gnu dot org
  2005-06-21 12:09 ` uros at kss-loka dot si
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2005-06-10 21:45 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-06-10 21:45 -------
Subject: Bug 21981

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	rth@gcc.gnu.org	2005-06-10 21:45:15

Modified files:
	gcc            : ChangeLog 
	gcc/config/i386: i386.c 

Log message:
	PR target/21981
	* config/i386/i386.c (ix86_function_value_regno_p): Return true
	for FIRST_MMX_REG if TARGET_MMX.
	(ix86_return_in_memory): Return 1 for MMX/3dNow vectors. Delete
	wrong comment.
	(ix86_struct_value_rtx): Emit warning for MMX ABI violations.
	(ix86_value_regno): Return FIRST_MMX_REG for MMX vector modes.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.9122&r2=2.9123
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/i386/i386.c.diff?cvsroot=gcc&r1=1.828&r2=1.829



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
                   ` (3 preceding siblings ...)
  2005-06-10 21:45 ` cvs-commit at gcc dot gnu dot org
@ 2005-06-21 12:09 ` uros at kss-loka dot si
  2005-07-27 22:30 ` [Bug target/21981] [4.0 only] " pinskia at gcc dot gnu dot org
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: uros at kss-loka dot si @ 2005-06-21 12:09 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From uros at kss-loka dot si  2005-06-21 12:09 -------
Fixed on mailine for 4.1.0, what about branches?

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|3.2.3 3.3.3 3.4.0 4.0.0     |3.2.3 3.3.3 3.4.0 4.0.0
                   |4.1.0                       |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] [4.0 only] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
                   ` (4 preceding siblings ...)
  2005-06-21 12:09 ` uros at kss-loka dot si
@ 2005-07-27 22:30 ` pinskia at gcc dot gnu dot org
  2005-09-05 15:25 ` jakub at gcc dot gnu dot org
  2005-09-27 16:24 ` mmitchel at gcc dot gnu dot org
  7 siblings, 0 replies; 9+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2005-07-27 22:30 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|__m64 return value should   |[4.0 only] __m64 return
                   |be returned in %mm0         |value should  be returned in
                   |                            |%mm0
   Target Milestone|---                         |4.0.2


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] [4.0 only] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
                   ` (5 preceding siblings ...)
  2005-07-27 22:30 ` [Bug target/21981] [4.0 only] " pinskia at gcc dot gnu dot org
@ 2005-09-05 15:25 ` jakub at gcc dot gnu dot org
  2005-09-27 16:24 ` mmitchel at gcc dot gnu dot org
  7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu dot org @ 2005-09-05 15:25 UTC (permalink / raw)
  To: gcc-bugs


------- Additional Comments From jakub at gcc dot gnu dot org  2005-09-05 15:24 -------
I don't think this should go to the branches.  It is an ABI change, which
shouldn't IMO happen between x.y.z and x.y.z+1.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] [4.0 only] __m64 return value should  be returned in %mm0
       [not found] <20050609125635.21981.uros@kss-loka.si>
                   ` (6 preceding siblings ...)
  2005-09-05 15:25 ` jakub at gcc dot gnu dot org
@ 2005-09-27 16:24 ` mmitchel at gcc dot gnu dot org
  7 siblings, 0 replies; 9+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2005-09-27 16:24 UTC (permalink / raw)
  To: gcc-bugs



-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|4.0.2                       |4.0.3


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug target/21981] [4.0 only] __m64 return value should  be returned in %mm0
       [not found] <bug-21981-1649@http.gcc.gnu.org/bugzilla/>
@ 2005-10-05 16:12 ` uros at kss-loka dot si
  0 siblings, 0 replies; 9+ messages in thread
From: uros at kss-loka dot si @ 2005-10-05 16:12 UTC (permalink / raw)
  To: gcc-bugs



------- Comment #6 from uros at kss-loka dot si  2005-10-05 16:11 -------
According to comment #5, closed as WONTFIX on branches.


-- 

uros at kss-loka dot si changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |WONTFIX


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21981


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2005-10-05 16:12 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20050609125635.21981.uros@kss-loka.si>
2005-06-09 14:16 ` [Bug target/21981] __m64 return value should be returned in %mm0 pinskia at gcc dot gnu dot org
2005-06-09 16:14 ` gcc-bugzilla at gcc dot gnu dot org
2005-06-10 12:12 ` uros at kss-loka dot si
2005-06-10 21:45 ` cvs-commit at gcc dot gnu dot org
2005-06-21 12:09 ` uros at kss-loka dot si
2005-07-27 22:30 ` [Bug target/21981] [4.0 only] " pinskia at gcc dot gnu dot org
2005-09-05 15:25 ` jakub at gcc dot gnu dot org
2005-09-27 16:24 ` mmitchel at gcc dot gnu dot org
     [not found] <bug-21981-1649@http.gcc.gnu.org/bugzilla/>
2005-10-05 16:12 ` uros at kss-loka dot si

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).