All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julian Seward <jseward@acm.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] SSE 'maxps' instruction bug?
Date: Mon, 12 Mar 2007 14:50:41 +0000	[thread overview]
Message-ID: <200703121450.41180.jseward@acm.org> (raw)


The program below tests the 'maxps' instruction.  When run on 
qemu-0.9.0, host amd64, guest x86, guest OS redhat8, it prints:

   f9a511d1 8d37d67f b34825b8 e2f40739

scp the binary to a Core 2 (real) machine and run:

   f9a511d1 22dcb9b9 b34825b8 e2f40739

Second 32-bit word is completely different.

This is 0.9.0 compiled from source using gcc-3.4.6, host openSuSE
10.2 on a Core 2 Duo in 64-bit mode.

Any ideas?  I grepped the 0.9.0 sources for "maxps" but couldn't
figure out where/how it is handled.

J



#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <malloc.h>
#include <string.h>

typedef  unsigned char  V128[16];
typedef  signed int     Int;

static void showV128 ( V128* v )
{
   Int i;
   for (i = 0; i < 16; i++) {
      printf("%02x", (Int)(*v)[i]);
      if (i > 0 && (i % 4) == 3) printf(" ");
   }
}

static V128 arg1 = { 0x28,0x9b,0x57,0xf7,0x22,0xdc,0xb9,0xb9,
                     0x0a,0xb3,0x8a,0xcf,0x73,0xbb,0xe4,0x0b };
static V128 arg2 = { 0xf9,0xa5,0x11,0xd1,0x8d,0x37,0xd6,0x7f,
                     0xb3,0x48,0x25,0xb8,0xe2,0xf4,0x07,0x39 };
static V128 res;

int main ( int argc, char** argv )
{
   __asm__ __volatile__(
      "movups (%0),%%xmm6\n\t"
      "movups (%1),%%xmm7\n\t"
      "maxps %%xmm6,%%xmm7\n\t"
      "movups %%xmm7, (%2)\n\t"
      : : "r"(&arg1), "r"(&arg2), "r"(&res)
      : "xmm6", "xmm7"
   );
   showV128( &res );
   printf("\n");
   return 0;
}

/* Output on qemu-0.9.0, host amd64, guest x86, guest OS redhat8:
   f9a511d1 8d37d67f b34825b8 e2f40739

   Run same binary on a Core 2:
   f9a511d1 22dcb9b9 b34825b8 e2f40739

   Second 32-bit word is completely different.
*/

             reply	other threads:[~2007-03-12 14:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-12 14:50 Julian Seward [this message]
2007-03-12 16:27 ` [Qemu-devel] SSE 'maxps' instruction bug? malc
2007-03-13 14:03   ` Julian Seward
2007-03-13 23:07   ` Tim Olson
2007-03-14  2:21     ` Julian Seward
2007-03-16 18:07       ` Rob Landley
2007-03-16 18:10         ` Julian Seward
2007-03-16 20:17           ` Rob Landley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200703121450.41180.jseward@acm.org \
    --to=jseward@acm.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.