From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15062 invoked by alias); 8 Feb 2011 12:46:19 -0000 Received: (qmail 15048 invoked by uid 22791); 8 Feb 2011 12:46:18 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_EQ,TW_FH,TW_HB,TW_SR X-Spam-Check-By: sourceware.org Received: from mail-yx0-f169.google.com (HELO mail-yx0-f169.google.com) (209.85.213.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 08 Feb 2011 12:46:13 +0000 Received: by yxl31 with SMTP id 31so2569275yxl.0 for ; Tue, 08 Feb 2011 04:46:11 -0800 (PST) Received: by 10.150.158.11 with SMTP id g11mr2887748ybe.238.1297169171250; Tue, 08 Feb 2011 04:46:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.147.34.12 with HTTP; Tue, 8 Feb 2011 04:45:50 -0800 (PST) In-Reply-To: <20110206163310.GB29666@host1.dyn.jankratochvil.net> References: <20110206163310.GB29666@host1.dyn.jankratochvil.net> From: Hui Zhu Date: Tue, 08 Feb 2011 12:46:00 -0000 Message-ID: Subject: Re: [drop/fyi] About verifying record opcodes To: Jan Kratochvil Cc: gdb-patches@sourceware.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-02/txt/msg00173.txt.bz2 Hi Jan, That is great. Please go ahead. Thanks, Hui On Mon, Feb 7, 2011 at 00:33, Jan Kratochvil wr= ote: > Hi Hui, > > while verifying the opcodes I found these differences - both > =A0 =A0 =A0 =A0http://developer.intel.com/products/processor/manuals/ > > and GNU opcodes use the suffix "d" - why the code is using "l"? > (for all --architecture of i386, i386:x86-64, i386:x86-64:intel) > > Used this verification script but it has too many false positives, it wou= ld > need some .c file adjustments for full "PASS" on the current code. =A0Jus= t FYI. > > > Regards, > Jan > > > > #! /usr/bin/perl > use strict; > use warnings; > > # case 0x0f10: =A0 =A0 =A0 =A0/* movups */ > > my $fname=3D"/tmp/cases.bin"; > > while (<>) { > =A0chomp; > =A0next if /^$/; > =A0die $_ if !m{^\s*case\s+0x((?:[0-9a-f]{2})*):\s*/[*] (\w+) [*]/\s*$}; > =A0my $opname=3D$2; > =A0my $bin=3D$1.("00"x16); > =A0$bin=3Dpack "H*",$bin; > =A0open F,">$fname" or die ">$fname"; > =A0print F $bin or die; > =A0close F or die; > =A0open F,"objdump -D --target=3Dbinary --architecture=3Di386:x86-64 $fna= me |" or die; > =A0my $F=3Ddo { local $/; ; } or die; > =A0close F or die; > =A0if ($F=3D~m{\n0000000000000000.*\n.*\b${opname}l?\b.*\n(\s*\Q...\E\n)?= $}) { > =A0 =A0warn "pass: $_\n"; > =A0} else { > =A0 =A0warn "FAIL: $_\n->\n$F".("-"x78)."\n"; > =A0} > } > > > --- a/gdb/i386-tdep.c > +++ b/gdb/i386-tdep.c > @@ -6347,7 +6347,7 @@ reswitch_prefix_add: > =A0 =A0 =A0 =A0 case 0x660f63: =A0 =A0 =A0/* packsswb */ > =A0 =A0 =A0 =A0 case 0x660f64: =A0 =A0 =A0/* pcmpgtb */ > =A0 =A0 =A0 =A0 case 0x660f65: =A0 =A0 =A0/* pcmpgtw */ > - =A0 =A0 =A0 =A0case 0x660f66: =A0 =A0 =A0/* pcmpgtl */ > + =A0 =A0 =A0 =A0case 0x660f66: =A0 =A0 =A0/* pcmpgtd */ > =A0 =A0 =A0 =A0 case 0x660f67: =A0 =A0 =A0/* packuswb */ > =A0 =A0 =A0 =A0 case 0x660f68: =A0 =A0 =A0/* punpckhbw */ > =A0 =A0 =A0 =A0 case 0x660f69: =A0 =A0 =A0/* punpckhwd */ > @@ -6363,7 +6363,7 @@ reswitch_prefix_add: > =A0 =A0 =A0 =A0 case 0xf30f70: =A0 =A0 =A0/* pshufhw */ > =A0 =A0 =A0 =A0 case 0x660f74: =A0 =A0 =A0/* pcmpeqb */ > =A0 =A0 =A0 =A0 case 0x660f75: =A0 =A0 =A0/* pcmpeqw */ > - =A0 =A0 =A0 =A0case 0x660f76: =A0 =A0 =A0/* pcmpeql */ > + =A0 =A0 =A0 =A0case 0x660f76: =A0 =A0 =A0/* pcmpeqd */ > =A0 =A0 =A0 =A0 case 0x660f7c: =A0 =A0 =A0/* haddpd */ > =A0 =A0 =A0 =A0 case 0xf20f7c: =A0 =A0 =A0/* haddps */ > =A0 =A0 =A0 =A0 case 0x660f7d: =A0 =A0 =A0/* hsubpd */ > @@ -6418,11 +6418,11 @@ reswitch_prefix_add: > =A0 =A0 =A0 =A0 case 0x660ff6: =A0 =A0 =A0/* psadbw */ > =A0 =A0 =A0 =A0 case 0x660ff8: =A0 =A0 =A0/* psubb */ > =A0 =A0 =A0 =A0 case 0x660ff9: =A0 =A0 =A0/* psubw */ > - =A0 =A0 =A0 =A0case 0x660ffa: =A0 =A0 =A0/* psubl */ > + =A0 =A0 =A0 =A0case 0x660ffa: =A0 =A0 =A0/* psubd */ > =A0 =A0 =A0 =A0 case 0x660ffb: =A0 =A0 =A0/* psubq */ > =A0 =A0 =A0 =A0 case 0x660ffc: =A0 =A0 =A0/* paddb */ > =A0 =A0 =A0 =A0 case 0x660ffd: =A0 =A0 =A0/* paddw */ > - =A0 =A0 =A0 =A0case 0x660ffe: =A0 =A0 =A0/* paddl */ > + =A0 =A0 =A0 =A0case 0x660ffe: =A0 =A0 =A0/* paddd */ > =A0 =A0 =A0 =A0 =A0 if (i386_record_modrm (&ir)) > =A0 =A0 =A0 =A0 =A0 =A0return -1; > =A0 =A0 =A0 =A0 =A0 ir.reg |=3D rex_r; > @@ -6558,7 +6558,7 @@ reswitch_prefix_add: > =A0 =A0 =A0 =A0 case 0x0f63: =A0 =A0 =A0/* packsswb */ > =A0 =A0 =A0 =A0 case 0x0f64: =A0 =A0 =A0/* pcmpgtb */ > =A0 =A0 =A0 =A0 case 0x0f65: =A0 =A0 =A0/* pcmpgtw */ > - =A0 =A0 =A0 =A0case 0x0f66: =A0 =A0 =A0/* pcmpgtl */ > + =A0 =A0 =A0 =A0case 0x0f66: =A0 =A0 =A0/* pcmpgtd */ > =A0 =A0 =A0 =A0 case 0x0f67: =A0 =A0 =A0/* packuswb */ > =A0 =A0 =A0 =A0 case 0x0f68: =A0 =A0 =A0/* punpckhbw */ > =A0 =A0 =A0 =A0 case 0x0f69: =A0 =A0 =A0/* punpckhwd */ > @@ -6569,7 +6569,7 @@ reswitch_prefix_add: > =A0 =A0 =A0 =A0 case 0x0f70: =A0 =A0 =A0/* pshufw */ > =A0 =A0 =A0 =A0 case 0x0f74: =A0 =A0 =A0/* pcmpeqb */ > =A0 =A0 =A0 =A0 case 0x0f75: =A0 =A0 =A0/* pcmpeqw */ > - =A0 =A0 =A0 =A0case 0x0f76: =A0 =A0 =A0/* pcmpeql */ > + =A0 =A0 =A0 =A0case 0x0f76: =A0 =A0 =A0/* pcmpeqd */ > =A0 =A0 =A0 =A0 case 0x0fc4: =A0 =A0 =A0/* pinsrw */ > =A0 =A0 =A0 =A0 case 0x0fd1: =A0 =A0 =A0/* psrlw */ > =A0 =A0 =A0 =A0 case 0x0fd2: =A0 =A0 =A0/* psrld */ > @@ -6607,11 +6607,11 @@ reswitch_prefix_add: > =A0 =A0 =A0 =A0 case 0x0ff6: =A0 =A0 =A0/* psadbw */ > =A0 =A0 =A0 =A0 case 0x0ff8: =A0 =A0 =A0/* psubb */ > =A0 =A0 =A0 =A0 case 0x0ff9: =A0 =A0 =A0/* psubw */ > - =A0 =A0 =A0 =A0case 0x0ffa: =A0 =A0 =A0/* psubl */ > + =A0 =A0 =A0 =A0case 0x0ffa: =A0 =A0 =A0/* psubd */ > =A0 =A0 =A0 =A0 case 0x0ffb: =A0 =A0 =A0/* psubq */ > =A0 =A0 =A0 =A0 case 0x0ffc: =A0 =A0 =A0/* paddb */ > =A0 =A0 =A0 =A0 case 0x0ffd: =A0 =A0 =A0/* paddw */ > - =A0 =A0 =A0 =A0case 0x0ffe: =A0 =A0 =A0/* paddl */ > + =A0 =A0 =A0 =A0case 0x0ffe: =A0 =A0 =A0/* paddd */ > =A0 =A0 =A0 =A0 =A0 if (i386_record_modrm (&ir)) > =A0 =A0 =A0 =A0 =A0 =A0return -1; > =A0 =A0 =A0 =A0 =A0 if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tde= p) + ir.reg)) >