From: Hui Zhu <teawater@gmail.com>
To: Michael Snyder <msnyder@vmware.com>
Cc: Joel Brobecker <brobecker@adacore.com>,
gdb-patches ml <gdb-patches@sourceware.org>
Subject: Re: [RFA/i386] Prec x86 MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 support
Date: Sun, 28 Mar 2010 16:27:00 -0000 [thread overview]
Message-ID: <daef60381003280926g37f5b83fteec5fbbcc358af@mail.gmail.com> (raw)
In-Reply-To: <4B4BD2AE.7030405@vmware.com>
[-- Attachment #1: Type: text/plain, Size: 1199 bytes --]
Hello,
I make a testsute for sse. I make it just support x86-64 target
because I got insn unsupport trap in a x86-32 pc. Maybe the CPU of
this pc is too old. :)
And I found some bug in sse patch. I make a new one.
Please help me review them. Thanks.
Best regards,
Hui
2010-03-29 Hui Zhu <teawater@gmail.com>
* i386-tdep.c (OT_DQUAD): New enum.
(i386_process_record): Add code for MMX, 3DNow!, SSE, SSE2,
SSE3, SSSE3 and SSE4.
2010-03-29 Hui Zhu <teawater@gmail.com>
* gdb.reverse/i386-sse-reverse.exp: New file.
* gdb.reverse/i386-sse-reverse.c: New file.
On Tue, Jan 12, 2010 at 09:38, Michael Snyder <msnyder@vmware.com> wrote:
> Hui Zhu wrote:
>>
>> For the sse insn special test, when I write the code for it, I just
>> read the spec and write the prec code. I don't good at write sse asm.
>> Sorry for it. I need a people help me with it.
>
> I'll help you get started, but you've got to do some of the work!
> You want to be a gdb maintainer / contributor, well,
> the job includes writing tests! ;-)
>
> And I don't know any SSE assembly language either!
>
> Let's take it off line until we have something to submit.
>
>
[-- Attachment #2: prec-x86-sse.txt --]
[-- Type: text/plain, Size: 33849 bytes --]
---
i386-tdep.c | 862 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 833 insertions(+), 29 deletions(-)
--- a/i386-tdep.c
+++ b/i386-tdep.c
@@ -2882,6 +2882,7 @@ enum
OT_WORD,
OT_LONG,
OT_QUAD,
+ OT_DQUAD,
};
/* i386 arith/logic operations */
@@ -3329,7 +3330,7 @@ i386_process_record (struct gdbarch *gdb
ir.dflag = 1;
ir.override = -1;
ir.popl_esp_hack = 0;
- ir.regmap = gdbarch_tdep (gdbarch)->record_regmap;
+ ir.regmap = tdep->record_regmap;
ir.gdbarch = gdbarch;
if (record_debug > 1)
@@ -3447,7 +3448,7 @@ i386_process_record (struct gdbarch *gdb
return -1;
}
ir.addr++;
- opcode = (uint16_t) opcode8 | 0x0f00;
+ opcode = (uint32_t) opcode8 | 0x0f00;
goto reswitch;
break;
@@ -5110,7 +5111,7 @@ i386_process_record (struct gdbarch *gdb
/* XXX */
case 0xcc: /* int3 */
- printf_unfiltered (_("Process record doesn't support instruction "
+ printf_unfiltered (_("Process record does not support instruction "
"int3.\n"));
ir.addr -= 1;
goto no_support;
@@ -5131,15 +5132,15 @@ i386_process_record (struct gdbarch *gdb
}
ir.addr++;
if (interrupt != 0x80
- || gdbarch_tdep (gdbarch)->i386_intx80_record == NULL)
+ || tdep->i386_intx80_record == NULL)
{
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction int 0x%02x.\n"),
interrupt);
ir.addr -= 2;
goto no_support;
}
- ret = gdbarch_tdep (gdbarch)->i386_intx80_record (ir.regcache);
+ ret = tdep->i386_intx80_record (ir.regcache);
if (ret)
return ret;
}
@@ -5147,7 +5148,7 @@ i386_process_record (struct gdbarch *gdb
/* XXX */
case 0xce: /* into */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction into.\n"));
ir.addr -= 1;
goto no_support;
@@ -5158,7 +5159,7 @@ i386_process_record (struct gdbarch *gdb
break;
case 0x62: /* bound */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction bound.\n"));
ir.addr -= 1;
goto no_support;
@@ -5194,21 +5195,21 @@ i386_process_record (struct gdbarch *gdb
break;
case 0x0f30: /* wrmsr */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction wrmsr.\n"));
ir.addr -= 2;
goto no_support;
break;
case 0x0f32: /* rdmsr */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction rdmsr.\n"));
ir.addr -= 2;
goto no_support;
break;
case 0x0f31: /* rdtsc */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction rdtsc.\n"));
ir.addr -= 2;
goto no_support;
@@ -5222,21 +5223,21 @@ i386_process_record (struct gdbarch *gdb
ir.addr -= 2;
goto no_support;
}
- if (gdbarch_tdep (gdbarch)->i386_sysenter_record == NULL)
+ if (tdep->i386_sysenter_record == NULL)
{
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction sysenter.\n"));
ir.addr -= 2;
goto no_support;
}
- ret = gdbarch_tdep (gdbarch)->i386_sysenter_record (ir.regcache);
+ ret = tdep->i386_sysenter_record (ir.regcache);
if (ret)
return ret;
}
break;
case 0x0f35: /* sysexit */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction sysexit.\n"));
ir.addr -= 2;
goto no_support;
@@ -5245,21 +5246,21 @@ i386_process_record (struct gdbarch *gdb
case 0x0f05: /* syscall */
{
int ret;
- if (gdbarch_tdep (gdbarch)->i386_syscall_record == NULL)
+ if (tdep->i386_syscall_record == NULL)
{
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction syscall.\n"));
ir.addr -= 2;
goto no_support;
}
- ret = gdbarch_tdep (gdbarch)->i386_syscall_record (ir.regcache);
+ ret = tdep->i386_syscall_record (ir.regcache);
if (ret)
return ret;
}
break;
case 0x0f07: /* sysret */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction sysret.\n"));
ir.addr -= 2;
goto no_support;
@@ -5273,7 +5274,7 @@ i386_process_record (struct gdbarch *gdb
break;
case 0xf4: /* hlt */
- printf_unfiltered (_("Process record doesn't support "
+ printf_unfiltered (_("Process record does not support "
"instruction hlt.\n"));
ir.addr -= 1;
goto no_support;
@@ -5569,14 +5570,816 @@ i386_process_record (struct gdbarch *gdb
I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
break;
- /* MMX/SSE/SSE2/PNI support */
- /* XXX */
+ /* MMX 3DNow! SSE SSE2 SSE3 SSSE3 SSE4 */
+
+ case 0x0f0d: /* 3DNow! prefetch */
+ break;
+
+ case 0x0f0e: /* 3DNow! femms */
+ case 0x0f77: /* emms */
+ if (i386_fpc_regnum_p (gdbarch, I387_FTAG_REGNUM(tdep)))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache, I387_FTAG_REGNUM(tdep));
+ break;
+
+ case 0x0f0f: /* 3DNow! data */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (target_read_memory (ir.addr, &opcode8, 1))
+ {
+ printf_unfiltered (_("Process record: error reading memory at "
+ "addr %s len = 1.\n"),
+ paddress (gdbarch, ir.addr));
+ return -1;
+ }
+ ir.addr++;
+ switch (opcode8)
+ {
+ case 0x0c: /* 3DNow! pi2fw */
+ case 0x0d: /* 3DNow! pi2fd */
+ case 0x1c: /* 3DNow! pf2iw */
+ case 0x1d: /* 3DNow! pf2id */
+ case 0x8a: /* 3DNow! pfnacc */
+ case 0x8e: /* 3DNow! pfpnacc */
+ case 0x90: /* 3DNow! pfcmpge */
+ case 0x94: /* 3DNow! pfmin */
+ case 0x96: /* 3DNow! pfrcp */
+ case 0x97: /* 3DNow! pfrsqrt */
+ case 0x9a: /* 3DNow! pfsub */
+ case 0x9e: /* 3DNow! pfadd */
+ case 0xa0: /* 3DNow! pfcmpgt */
+ case 0xa4: /* 3DNow! pfmax */
+ case 0xa6: /* 3DNow! pfrcpit1 */
+ case 0xa7: /* 3DNow! pfrsqit1 */
+ case 0xaa: /* 3DNow! pfsubr */
+ case 0xae: /* 3DNow! pfacc */
+ case 0xb0: /* 3DNow! pfcmpeq */
+ case 0xb4: /* 3DNow! pfmul */
+ case 0xb6: /* 3DNow! pfrcpit2 */
+ case 0xb7: /* 3DNow! pmulhrw */
+ case 0xbb: /* 3DNow! pswapd */
+ case 0xbf: /* 3DNow! pavgusb */
+ if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg))
+ goto no_support_3dnow_data;
+ record_arch_list_add_reg (ir.regcache, ir.reg);
+ break;
+
+ default:
+no_support_3dnow_data:
+ opcode = (opcode << 8) | opcode8;
+ goto no_support;
+ break;
+ }
+ break;
+
+ case 0x0faa: /* rsm */
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDX_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBX_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESP_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REBP_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM);
+ break;
+
+ case 0x0fae:
+ if (i386_record_modrm (&ir))
+ return -1;
+ switch(ir.reg)
+ {
+ case 0: /* fxsave */
+ {
+ uint64_t tmpu64;
+
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
+ if (i386_record_lea_modrm_addr (&ir, &tmpu64))
+ return -1;
+ if (record_arch_list_add_mem (tmpu64, 512))
+ return -1;
+ }
+ break;
+
+ case 1: /* fxrstor */
+ {
+ int i;
+
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
+
+ for (i = I387_MM0_REGNUM (tdep);
+ i386_mmx_regnum_p (gdbarch, i); i++)
+ record_arch_list_add_reg (ir.regcache, i);
+
+ for (i = I387_XMM0_REGNUM (tdep);
+ i386_sse_regnum_p (gdbarch, i); i++)
+ record_arch_list_add_reg (ir.regcache, i);
+
+ if (i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep)))
+ record_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep));
+
+ for (i = I387_ST0_REGNUM (tdep);
+ i386_fp_regnum_p (gdbarch, i); i++)
+ record_arch_list_add_reg (ir.regcache, i);
+
+ for (i = I387_FCTRL_REGNUM (tdep);
+ i386_fpc_regnum_p (gdbarch, i); i++)
+ record_arch_list_add_reg (ir.regcache, i);
+ }
+ break;
+
+ case 2: /* ldmxcsr */
+ if (!i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep)))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep));
+ break;
+
+ case 3: /* stmxcsr */
+ ir.ot = OT_LONG;
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ break;
+
+ case 5: /* lfence */
+ case 6: /* mfence */
+ case 7: /* sfence clflush */
+ break;
+
+ default:
+ opcode = (opcode << 8) | ir.modrm;
+ goto no_support;
+ break;
+ }
+ break;
+
+ case 0x0fc3: /* movnti */
+ ir.ot = (ir.dflag == 2) ? OT_QUAD : OT_LONG;
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (ir.mod == 3)
+ goto no_support;
+ ir.reg |= rex_r;
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ break;
+
+ /* Add prefix to opcode. */
+ case 0x0f10:
+ case 0x0f11:
+ case 0x0f12:
+ case 0x0f13:
+ case 0x0f14:
+ case 0x0f15:
+ case 0x0f16:
+ case 0x0f17:
+ case 0x0f28:
+ case 0x0f29:
+ case 0x0f2a:
+ case 0x0f2b:
+ case 0x0f2c:
+ case 0x0f2d:
+ case 0x0f2e:
+ case 0x0f2f:
+ case 0x0f38:
+ case 0x0f39:
+ case 0x0f3a:
+ case 0x0f50:
+ case 0x0f51:
+ case 0x0f52:
+ case 0x0f53:
+ case 0x0f54:
+ case 0x0f55:
+ case 0x0f56:
+ case 0x0f57:
+ case 0x0f58:
+ case 0x0f59:
+ case 0x0f5a:
+ case 0x0f5b:
+ case 0x0f5c:
+ case 0x0f5d:
+ case 0x0f5e:
+ case 0x0f5f:
+ case 0x0f60:
+ case 0x0f61:
+ case 0x0f62:
+ case 0x0f63:
+ case 0x0f64:
+ case 0x0f65:
+ case 0x0f66:
+ case 0x0f67:
+ case 0x0f68:
+ case 0x0f69:
+ case 0x0f6a:
+ case 0x0f6b:
+ case 0x0f6c:
+ case 0x0f6d:
+ case 0x0f6e:
+ case 0x0f6f:
+ case 0x0f70:
+ case 0x0f71:
+ case 0x0f72:
+ case 0x0f73:
+ case 0x0f74:
+ case 0x0f75:
+ case 0x0f76:
+ case 0x0f7c:
+ case 0x0f7d:
+ case 0x0f7e:
+ case 0x0f7f:
+ case 0x0fb8:
+ case 0x0fc2:
+ case 0x0fc4:
+ case 0x0fc5:
+ case 0x0fc6:
+ case 0x0fd0:
+ case 0x0fd1:
+ case 0x0fd2:
+ case 0x0fd3:
+ case 0x0fd4:
+ case 0x0fd5:
+ case 0x0fd6:
+ case 0x0fd7:
+ case 0x0fd8:
+ case 0x0fd9:
+ case 0x0fda:
+ case 0x0fdb:
+ case 0x0fdc:
+ case 0x0fdd:
+ case 0x0fde:
+ case 0x0fdf:
+ case 0x0fe0:
+ case 0x0fe1:
+ case 0x0fe2:
+ case 0x0fe3:
+ case 0x0fe4:
+ case 0x0fe5:
+ case 0x0fe6:
+ case 0x0fe7:
+ case 0x0fe8:
+ case 0x0fe9:
+ case 0x0fea:
+ case 0x0feb:
+ case 0x0fec:
+ case 0x0fed:
+ case 0x0fee:
+ case 0x0fef:
+ case 0x0ff0:
+ case 0x0ff1:
+ case 0x0ff2:
+ case 0x0ff3:
+ case 0x0ff4:
+ case 0x0ff5:
+ case 0x0ff6:
+ case 0x0ff7:
+ case 0x0ff8:
+ case 0x0ff9:
+ case 0x0ffa:
+ case 0x0ffb:
+ case 0x0ffc:
+ case 0x0ffd:
+ case 0x0ffe:
+ switch (prefixes)
+ {
+ case PREFIX_REPNZ:
+ opcode |= 0xf20000;
+ break;
+ case PREFIX_DATA:
+ opcode |= 0x660000;
+ break;
+ case PREFIX_REPZ:
+ opcode |= 0xf30000;
+ break;
+ }
+reswitch_prefix_add:
+ switch (opcode)
+ {
+ case 0x0f38:
+ case 0x660f38:
+ case 0xf20f38:
+ case 0x0f3a:
+ case 0x660f3a:
+ if (target_read_memory (ir.addr, &opcode8, 1))
+ {
+ printf_unfiltered (_("Process record: error reading memory at "
+ "addr %s len = 1.\n"),
+ paddress (gdbarch, ir.addr));
+ return -1;
+ }
+ ir.addr++;
+ opcode = (uint32_t) opcode8 | opcode << 8;
+ goto reswitch_prefix_add;
+ break;
+
+ case 0x0f10: /* movups */
+ case 0x660f10: /* movupd */
+ case 0xf30f10: /* movss */
+ case 0xf20f10: /* movsd */
+ case 0x0f12: /* movlps */
+ case 0x660f12: /* movlpd */
+ case 0xf30f12: /* movsldup */
+ case 0xf20f12: /* movddup */
+ case 0x0f14: /* unpcklps */
+ case 0x660f14: /* unpcklpd */
+ case 0x0f15: /* unpckhps */
+ case 0x660f15: /* unpckhpd */
+ case 0x0f16: /* movhps */
+ case 0x660f16: /* movhpd */
+ case 0xf30f16: /* movshdup */
+ case 0x0f28: /* movaps */
+ case 0x660f28: /* movapd */
+ case 0x0f2a: /* cvtpi2ps */
+ case 0x660f2a: /* cvtpi2pd */
+ case 0xf30f2a: /* cvtsi2ss */
+ case 0xf20f2a: /* cvtsi2sd */
+ case 0x0f2c: /* cvttps2pi */
+ case 0x660f2c: /* cvttpd2pi */
+ case 0x0f2d: /* cvtps2pi */
+ case 0x660f2d: /* cvtpd2pi */
+ case 0x660f3800: /* pshufb */
+ case 0x660f3801: /* phaddw */
+ case 0x660f3802: /* phaddd */
+ case 0x660f3803: /* phaddsw */
+ case 0x660f3804: /* pmaddubsw */
+ case 0x660f3805: /* phsubw */
+ case 0x660f3806: /* phsubd */
+ case 0x660f3807: /* phaddsw */
+ case 0x660f3808: /* psignb */
+ case 0x660f3809: /* psignw */
+ case 0x660f380a: /* psignd */
+ case 0x660f380b: /* pmulhrsw */
+ case 0x660f3810: /* pblendvb */
+ case 0x660f3814: /* blendvps */
+ case 0x660f3815: /* blendvpd */
+ case 0x660f381c: /* pabsb */
+ case 0x660f381d: /* pabsw */
+ case 0x660f381e: /* pabsd */
+ case 0x660f3820: /* pmovsxbw */
+ case 0x660f3821: /* pmovsxbd */
+ case 0x660f3822: /* pmovsxbq */
+ case 0x660f3823: /* pmovsxwd */
+ case 0x660f3824: /* pmovsxwq */
+ case 0x660f3825: /* pmovsxdq */
+ case 0x660f3828: /* pmuldq */
+ case 0x660f3829: /* pcmpeqq */
+ case 0x660f382a: /* movntdqa */
+ case 0x660f3a08: /* roundps */
+ case 0x660f3a09: /* roundpd */
+ case 0x660f3a0a: /* roundss */
+ case 0x660f3a0b: /* roundsd */
+ case 0x660f3a0c: /* blendps */
+ case 0x660f3a0d: /* blendpd */
+ case 0x660f3a0e: /* pblendw */
+ case 0x660f3a0f: /* palignr */
+ case 0x660f3a20: /* pinsrb */
+ case 0x660f3a21: /* insertps */
+ case 0x660f3a22: /* pinsrd pinsrq */
+ case 0x660f3a40: /* dpps */
+ case 0x660f3a41: /* dppd */
+ case 0x660f3a42: /* mpsadbw */
+ case 0x660f3a60: /* pcmpestrm */
+ case 0x660f3a61: /* pcmpestri */
+ case 0x660f3a62: /* pcmpistrm */
+ case 0x660f3a63: /* pcmpistri */
+ case 0x0f51: /* sqrtps */
+ case 0x660f51: /* sqrtpd */
+ case 0xf20f51: /* sqrtsd */
+ case 0xf30f51: /* sqrtss */
+ case 0x0f52: /* rsqrtps */
+ case 0xf30f52: /* rsqrtss */
+ case 0x0f53: /* rcpps */
+ case 0xf30f53: /* rcpss */
+ case 0x0f54: /* andps */
+ case 0x660f54: /* andpd */
+ case 0x0f55: /* andnps */
+ case 0x660f55: /* andnpd */
+ case 0x0f56: /* orps */
+ case 0x660f56: /* orpd */
+ case 0x0f57: /* xorps */
+ case 0x660f57: /* xorpd */
+ case 0x0f58: /* addps */
+ case 0x660f58: /* addpd */
+ case 0xf20f58: /* addsd */
+ case 0xf30f58: /* addss */
+ case 0x0f59: /* mulps */
+ case 0x660f59: /* mulpd */
+ case 0xf20f59: /* mulsd */
+ case 0xf30f59: /* mulss */
+ case 0x0f5a: /* cvtps2pd */
+ case 0x660f5a: /* cvtpd2ps */
+ case 0xf20f5a: /* cvtsd2ss */
+ case 0xf30f5a: /* cvtss2sd */
+ case 0x0f5b: /* cvtdq2ps */
+ case 0x660f5b: /* cvtps2dq */
+ case 0xf30f5b: /* cvttps2dq */
+ case 0x0f5c: /* subps */
+ case 0x660f5c: /* subpd */
+ case 0xf20f5c: /* subsd */
+ case 0xf30f5c: /* subss */
+ case 0x0f5d: /* minps */
+ case 0x660f5d: /* minpd */
+ case 0xf20f5d: /* minsd */
+ case 0xf30f5d: /* minss */
+ case 0x0f5e: /* divps */
+ case 0x660f5e: /* divpd */
+ case 0xf20f5e: /* divsd */
+ case 0xf30f5e: /* divss */
+ case 0x0f5f: /* maxps */
+ case 0x660f5f: /* maxpd */
+ case 0xf20f5f: /* maxsd */
+ case 0xf30f5f: /* maxss */
+ case 0x660f60: /* punpcklbw */
+ case 0x660f61: /* punpcklwd */
+ case 0x660f62: /* punpckldq */
+ case 0x660f63: /* packsswb */
+ case 0x660f64: /* pcmpgtb */
+ case 0x660f65: /* pcmpgtw */
+ case 0x660f66: /* pcmpgtl */
+ case 0x660f67: /* packuswb */
+ case 0x660f68: /* punpckhbw */
+ case 0x660f69: /* punpckhwd */
+ case 0x660f6a: /* punpckhdq */
+ case 0x660f6b: /* packssdw */
+ case 0x660f6c: /* punpcklqdq */
+ case 0x660f6d: /* punpckhqdq */
+ case 0x660f6e: /* movd */
+ case 0x660f6f: /* movdqa */
+ case 0xf30f6f: /* movdqu */
+ case 0x660f70: /* pshufd */
+ case 0xf20f70: /* pshuflw */
+ case 0xf30f70: /* pshufhw */
+ case 0x660f74: /* pcmpeqb */
+ case 0x660f75: /* pcmpeqw */
+ case 0x660f76: /* pcmpeql */
+ case 0x660f7c: /* haddpd */
+ case 0xf20f7c: /* haddps */
+ case 0x660f7d: /* hsubpd */
+ case 0xf20f7d: /* hsubps */
+ case 0xf30f7e: /* movq */
+ case 0x0fc2: /* cmpps */
+ case 0x660fc2: /* cmppd */
+ case 0xf20fc2: /* cmpsd */
+ case 0xf30fc2: /* cmpss */
+ case 0x660fc4: /* pinsrw */
+ case 0x0fc6: /* shufps */
+ case 0x660fc6: /* shufpd */
+ case 0x660fd0: /* addsubpd */
+ case 0xf20fd0: /* addsubps */
+ case 0x660fd1: /* psrlw */
+ case 0x660fd2: /* psrld */
+ case 0x660fd3: /* psrlq */
+ case 0x660fd4: /* paddq */
+ case 0x660fd5: /* pmullw */
+ case 0xf30fd6: /* movq2dq */
+ case 0x660fd8: /* psubusb */
+ case 0x660fd9: /* psubusw */
+ case 0x660fda: /* pminub */
+ case 0x660fdb: /* pand */
+ case 0x660fdc: /* paddusb */
+ case 0x660fdd: /* paddusw */
+ case 0x660fde: /* pmaxub */
+ case 0x660fdf: /* pandn */
+ case 0x660fe0: /* pavgb */
+ case 0x660fe1: /* psraw */
+ case 0x660fe2: /* psrad */
+ case 0x660fe3: /* pavgw */
+ case 0x660fe4: /* pmulhuw */
+ case 0x660fe5: /* pmulhw */
+ case 0x660fe6: /* cvttpd2dq */
+ case 0xf20fe6: /* cvtpd2dq */
+ case 0xf30fe6: /* cvtdq2pd */
+ case 0x660fe8: /* psubsb */
+ case 0x660fe9: /* psubsw */
+ case 0x660fea: /* pminsw */
+ case 0x660feb: /* por */
+ case 0x660fec: /* paddsb */
+ case 0x660fed: /* paddsw */
+ case 0x660fee: /* pmaxsw */
+ case 0x660fef: /* pxor */
+ case 0x660ff0: /* lddqu */
+ case 0x660ff1: /* psllw */
+ case 0x660ff2: /* pslld */
+ case 0x660ff3: /* psllq */
+ case 0x660ff4: /* pmuludq */
+ case 0x660ff5: /* pmaddwd */
+ case 0x660ff6: /* psadbw */
+ case 0x660ff8: /* psubb */
+ case 0x660ff9: /* psubw */
+ case 0x660ffa: /* psubl */
+ case 0x660ffb: /* psubq */
+ case 0x660ffc: /* paddb */
+ case 0x660ffd: /* paddw */
+ case 0x660ffe: /* paddl */
+ if (i386_record_modrm (&ir))
+ return -1;
+ ir.reg |= rex_r;
+ if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.reg))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_XMM0_REGNUM (tdep) + ir.reg);
+ if ((opcode & 0xfffffffc) == 0x660f3a60)
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
+ break;
+
+ case 0x0f11: /* movups */
+ case 0x660f11: /* movupd */
+ case 0xf30f11: /* movss */
+ case 0xf20f11: /* movsd */
+ case 0x0f13: /* movlps */
+ case 0x660f13: /* movlpd */
+ case 0x0f17: /* movhps */
+ case 0x660f17: /* movhpd */
+ case 0x0f29: /* movaps */
+ case 0x660f29: /* movapd */
+ case 0x660f3a14: /* pextrb */
+ case 0x660f3a15: /* pextrw */
+ case 0x660f3a16: /* pextrd pextrq */
+ case 0x660f3a17: /* extractps */
+ case 0x660f7f: /* movdqa */
+ case 0xf30f7f: /* movdqu */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (ir.mod == 3)
+ {
+ if (opcode == 0x0f13 || opcode == 0x660f13
+ || opcode == 0x0f17 || opcode == 0x660f17)
+ goto no_support;
+ ir.rm |= ir.rex_b;
+ if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_XMM0_REGNUM (tdep) + ir.rm);
+ }
+ else
+ {
+ switch (opcode)
+ {
+ case 0x660f3a14:
+ ir.ot = OT_BYTE;
+ break;
+ case 0x660f3a15:
+ ir.ot = OT_WORD;
+ break;
+ case 0x660f3a16:
+ ir.ot = OT_LONG;
+ break;
+ case 0x660f3a17:
+ ir.ot = OT_QUAD;
+ break;
+ default:
+ ir.ot = OT_DQUAD;
+ break;
+ }
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ }
+ break;
+
+ case 0x0f2b: /* movntps */
+ case 0x660f2b: /* movntpd */
+ case 0x0fe7: /* movntq */
+ case 0x660fe7: /* movntdq */
+ if (ir.mod == 3)
+ goto no_support;
+ if (opcode == 0x0fe7)
+ ir.ot = OT_QUAD;
+ else
+ ir.ot = OT_DQUAD;
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ break;
+
+ case 0xf30f2c: /* cvttss2si */
+ case 0xf20f2c: /* cvttsd2si */
+ case 0xf30f2d: /* cvtss2si */
+ case 0xf20f2d: /* cvtsd2si */
+ case 0xf20f38f0: /* crc32 */
+ case 0xf20f38f1: /* crc32 */
+ case 0x0f50: /* movmskps */
+ case 0x660f50: /* movmskpd */
+ case 0x0fc5: /* pextrw */
+ case 0x660fc5: /* pextrw */
+ case 0x0fd7: /* pmovmskb */
+ case 0x660fd7: /* pmovmskb */
+ I386_RECORD_ARCH_LIST_ADD_REG (ir.reg | rex_r);
+ break;
+
+ case 0x0f3800: /* pshufb */
+ case 0x0f3801: /* phaddw */
+ case 0x0f3802: /* phaddd */
+ case 0x0f3803: /* phaddsw */
+ case 0x0f3804: /* pmaddubsw */
+ case 0x0f3805: /* phsubw */
+ case 0x0f3806: /* phsubd */
+ case 0x0f3807: /* phaddsw */
+ case 0x0f3808: /* psignb */
+ case 0x0f3809: /* psignw */
+ case 0x0f380a: /* psignd */
+ case 0x0f380b: /* pmulhrsw */
+ case 0x0f381c: /* pabsb */
+ case 0x0f381d: /* pabsw */
+ case 0x0f381e: /* pabsd */
+ case 0x0f382b: /* packusdw */
+ case 0x0f3830: /* pmovzxbw */
+ case 0x0f3831: /* pmovzxbd */
+ case 0x0f3832: /* pmovzxbq */
+ case 0x0f3833: /* pmovzxwd */
+ case 0x0f3834: /* pmovzxwq */
+ case 0x0f3835: /* pmovzxdq */
+ case 0x0f3837: /* pcmpgtq */
+ case 0x0f3838: /* pminsb */
+ case 0x0f3839: /* pminsd */
+ case 0x0f383a: /* pminuw */
+ case 0x0f383b: /* pminud */
+ case 0x0f383c: /* pmaxsb */
+ case 0x0f383d: /* pmaxsd */
+ case 0x0f383e: /* pmaxuw */
+ case 0x0f383f: /* pmaxud */
+ case 0x0f3840: /* pmulld */
+ case 0x0f3841: /* phminposuw */
+ case 0x0f3a0f: /* palignr */
+ case 0x0f60: /* punpcklbw */
+ case 0x0f61: /* punpcklwd */
+ case 0x0f62: /* punpckldq */
+ case 0x0f63: /* packsswb */
+ case 0x0f64: /* pcmpgtb */
+ case 0x0f65: /* pcmpgtw */
+ case 0x0f66: /* pcmpgtl */
+ case 0x0f67: /* packuswb */
+ case 0x0f68: /* punpckhbw */
+ case 0x0f69: /* punpckhwd */
+ case 0x0f6a: /* punpckhdq */
+ case 0x0f6b: /* packssdw */
+ case 0x0f6e: /* movd */
+ case 0x0f6f: /* movq */
+ case 0x0f70: /* pshufw */
+ case 0x0f74: /* pcmpeqb */
+ case 0x0f75: /* pcmpeqw */
+ case 0x0f76: /* pcmpeql */
+ case 0x0fc4: /* pinsrw */
+ case 0x0fd1: /* psrlw */
+ case 0x0fd2: /* psrld */
+ case 0x0fd3: /* psrlq */
+ case 0x0fd4: /* paddq */
+ case 0x0fd5: /* pmullw */
+ case 0xf20fd6: /* movdq2q */
+ case 0x0fd8: /* psubusb */
+ case 0x0fd9: /* psubusw */
+ case 0x0fda: /* pminub */
+ case 0x0fdb: /* pand */
+ case 0x0fdc: /* paddusb */
+ case 0x0fdd: /* paddusw */
+ case 0x0fde: /* pmaxub */
+ case 0x0fdf: /* pandn */
+ case 0x0fe0: /* pavgb */
+ case 0x0fe1: /* psraw */
+ case 0x0fe2: /* psrad */
+ case 0x0fe3: /* pavgw */
+ case 0x0fe4: /* pmulhuw */
+ case 0x0fe5: /* pmulhw */
+ case 0x0fe8: /* psubsb */
+ case 0x0fe9: /* psubsw */
+ case 0x0fea: /* pminsw */
+ case 0x0feb: /* por */
+ case 0x0fec: /* paddsb */
+ case 0x0fed: /* paddsw */
+ case 0x0fee: /* pmaxsw */
+ case 0x0fef: /* pxor */
+ case 0x0ff1: /* psllw */
+ case 0x0ff2: /* pslld */
+ case 0x0ff3: /* psllq */
+ case 0x0ff4: /* pmuludq */
+ case 0x0ff5: /* pmaddwd */
+ case 0x0ff6: /* psadbw */
+ case 0x0ff8: /* psubb */
+ case 0x0ff9: /* psubw */
+ case 0x0ffa: /* psubl */
+ case 0x0ffb: /* psubq */
+ case 0x0ffc: /* paddb */
+ case 0x0ffd: /* paddw */
+ case 0x0ffe: /* paddl */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_MM0_REGNUM (tdep) + ir.reg);
+ break;
+
+ case 0x0f71: /* psllw */
+ case 0x0f72: /* pslld */
+ case 0x0f73: /* psllq */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_MM0_REGNUM (tdep) + ir.rm);
+ break;
+
+ case 0x660f71: /* psllw */
+ case 0x660f72: /* pslld */
+ case 0x660f73: /* psllq */
+ if (i386_record_modrm (&ir))
+ return -1;
+ ir.rm |= ir.rex_b;
+ if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_XMM0_REGNUM (tdep) + ir.rm);
+ break;
+
+ case 0x0f7e: /* movd */
+ case 0x660f7e: /* movd */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (ir.mod == 3)
+ I386_RECORD_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b);
+ else
+ {
+ if (ir.dflag == 2)
+ ir.ot = OT_QUAD;
+ else
+ ir.ot = OT_LONG;
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ }
+ break;
+
+ case 0x0f7f: /* movq */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (ir.mod == 3)
+ {
+ if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_MM0_REGNUM (tdep) + ir.rm);
+ }
+ else
+ {
+ ir.ot = OT_QUAD;
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ }
+ break;
+
+ case 0xf30fb8: /* popcnt */
+ if (i386_record_modrm (&ir))
+ return -1;
+ I386_RECORD_ARCH_LIST_ADD_REG (ir.reg);
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
+ break;
+
+ case 0x660fd6: /* movq */
+ if (i386_record_modrm (&ir))
+ return -1;
+ if (ir.mod == 3)
+ {
+ ir.rm |= ir.rex_b;
+ if (!i386_sse_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm))
+ goto no_support;
+ record_arch_list_add_reg (ir.regcache,
+ I387_XMM0_REGNUM (tdep) + ir.rm);
+ }
+ else
+ {
+ ir.ot = OT_QUAD;
+ if (i386_record_lea_modrm (&ir))
+ return -1;
+ }
+ break;
+
+ case 0x660f3817: /* ptest */
+ case 0x0f2e: /* ucomiss */
+ case 0x660f2e: /* ucomisd */
+ case 0x0f2f: /* comiss */
+ case 0x660f2f: /* comisd */
+ I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM);
+ break;
+
+ case 0x0ff7: /* maskmovq */
+ regcache_raw_read_unsigned (ir.regcache,
+ ir.regmap[X86_RECORD_REDI_REGNUM],
+ &addr);
+ if (record_arch_list_add_mem (addr, 64))
+ return -1;
+ break;
+
+ case 0x660ff7: /* maskmovdqu */
+ regcache_raw_read_unsigned (ir.regcache,
+ ir.regmap[X86_RECORD_REDI_REGNUM],
+ &addr);
+ if (record_arch_list_add_mem (addr, 128))
+ return -1;
+ break;
+
+ default:
+ goto no_support;
+ break;
+ }
+ break;
default:
- if (opcode > 0xff)
- ir.addr -= 2;
- else
- ir.addr -= 1;
goto no_support;
break;
}
@@ -5589,9 +6392,10 @@ i386_process_record (struct gdbarch *gdb
return 0;
no_support:
- printf_unfiltered (_("Process record doesn't support instruction 0x%02x "
- "at address %s.\n"),
- (unsigned int) (opcode), paddress (gdbarch, ir.addr));
+ printf_unfiltered (_("Process record does not support instruction 0x%02x "
+ "at address %s.\n"),
+ (unsigned int) (opcode),
+ paddress (gdbarch, ir.orig_addr));
return -1;
}
[-- Attachment #3: prec-x86-sse-test.txt --]
[-- Type: text/plain, Size: 23640 bytes --]
---
testsuite/gdb.reverse/i386-sse-reverse.c | 85 +++
testsuite/gdb.reverse/i386-sse-reverse.exp | 697 +++++++++++++++++++++++++++++
2 files changed, 782 insertions(+)
--- /dev/null
+++ b/testsuite/gdb.reverse/i386-sse-reverse.c
@@ -0,0 +1,85 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2009, 2010 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* Architecture tests for intel i386 platform. */
+
+void
+sse_test (void)
+{
+ char buf0[] = {0, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, 13, 14, 15};
+ char buf1[] = {16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31};
+ char buf2[] = {32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47};
+
+ asm ("movupd %0, %%xmm0":"=m"(buf0));
+ asm ("movupd %0, %%xmm1":"=m"(buf1));
+ asm ("movupd %0, %%xmm2":"=m"(buf2));
+
+ asm ("addpd %xmm0, %xmm1");
+ asm ("addps %xmm1, %xmm2");
+ asm ("addsd %xmm2, %xmm1");
+ asm ("addss %xmm1, %xmm0");
+ asm ("addsubpd %xmm0, %xmm2");
+ asm ("addsubps %xmm0, %xmm1");
+ asm ("andpd %xmm1, %xmm2");
+ asm ("andps %xmm2, %xmm1");
+ asm ("blendpd $1, %xmm1, %xmm0");
+ asm ("blendps $2, %xmm2, %xmm0");
+ asm ("blendvpd %xmm1, %xmm2");
+ asm ("blendvps %xmm2, %xmm1");
+ asm ("cmppd $3, %xmm0, %xmm1");
+ asm ("cmpps $4, %xmm1, %xmm2");
+ asm ("cmpsd $5, %xmm2, %xmm1");
+ asm ("cmpss $6, %xmm1, %xmm0");
+ asm ("comisd %xmm0, %xmm2");
+ asm ("comiss %xmm0, %xmm1");
+ asm ("cvtdq2pd %xmm1, %xmm2");
+ asm ("cvtdq2ps %xmm2, %xmm1");
+ asm ("cvtpd2dq %xmm1, %xmm0");
+ asm ("cvtdq2ps %xmm2, %xmm0");
+ asm ("cvtpd2ps %xmm0, %xmm1");
+ asm ("divpd %xmm1, %xmm2");
+ asm ("divps %xmm2, %xmm1");
+ asm ("divsd %xmm1, %xmm0");
+ asm ("divss %xmm0, %xmm2");
+ asm ("mulpd %xmm0, %xmm1");
+ asm ("mulps %xmm1, %xmm2");
+ asm ("mulsd %xmm2, %xmm1");
+ asm ("mulss %xmm1, %xmm0");
+ asm ("orpd %xmm2, %xmm0");
+ asm ("orps %xmm0, %xmm1");
+ asm ("pabsb %xmm1, %xmm2");
+ asm ("pabsw %xmm2, %xmm1");
+ asm ("pabsd %xmm1, %xmm0");
+ asm ("packsswb %xmm0, %xmm2");
+ asm ("packssdw %xmm0, %xmm1");
+ asm ("ucomisd %xmm1, %xmm2");
+ asm ("ucomiss %xmm2, %xmm1");
+ asm ("unpckhpd %xmm1, %xmm0");
+ asm ("unpckhps %xmm2, %xmm0");
+ asm ("xorpd %xmm0, %xmm1");
+ asm ("xorps %xmm1, %xmm2");
+} /* end sse_test */
+
+int
+main ()
+{
+ sse_test ();
+ return 0; /* end of main */
+}
--- /dev/null
+++ b/testsuite/gdb.reverse/i386-sse-reverse.exp
@@ -0,0 +1,697 @@
+# Copyright 2009, 2010 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite.
+
+#
+# This test tests some i386 general instructions for reverse execution.
+#
+
+if ![target_info exists gdb,can_reverse] {
+ return
+}
+
+if $tracelevel {
+ strace $tracelevel
+}
+
+set prms_id 0
+set bug_id 0
+
+if ![istarget "*86*-*linux*"] then {
+ verbose "Skipping i386 reverse tests."
+ return
+}
+
+set testfile "i386-sse-reverse"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+# some targets have leading underscores on assembly symbols.
+# TODO: detect this automatically
+set additional_flags ""
+if [istarget "i?86-*-cygwin*"] then {
+ set additional_flags "additional_flags=-DSYMBOL_PREFIX=\"_\""
+}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $additional_flags]] != "" } {
+ untested i386-sse-reverse
+ return -1
+}
+
+set end_of_main [gdb_get_line_number " end of main "]
+set end_sse_test [gdb_get_line_number " end sse_test "]
+
+# Get things started.
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+runto main
+
+if [target_info exists gdb,use_precord] {
+ # Activate process record/replay
+ gdb_test "record" "" "Turn on process record"
+ # FIXME: command ought to acknowledge, so we can test if it succeeded.
+}
+
+global hex
+global decimal
+
+gdb_test "break $end_sse_test" \
+ "Breakpoint $decimal at .* line $end_sse_test\." \
+ "set breakpoint at end of sse_test"
+
+gdb_test "continue" \
+ " end sse_test .*" \
+ "continue to sse_test"
+
+gdb_test "reverse-step" "xorps.*" "reverse-step to xorps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x7f7f7f007fff7fff7f7f7f007fff7fff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x008000ff00000000008000ff00000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "xorpd.*" "reverse-step to xorpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x7f7f7f007fff7fff7f7f7f007fff7fff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "unpckhps.*" "reverse-step to unpckhps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x7fff7fff7fff7fff0108200001400000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "unpckhpd.*" "reverse-step to unpckhpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "ucomiss.*" "reverse-step to ucomiss"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "ucomisd.*" "reverse-step to ucomisd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x7fff7fff7fff7fff7fff7fff7fff7fff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "packssdw.*" "reverse-step to packssdw"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x7f7f7f007f7f7f007f7f7f007f7f7f00.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "packsswb.*" "reverse-step to packsswb"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "pabsd.*" "reverse-step to pabsd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xfff02000ffc000008ff03ffeff800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "pabsw.*" "reverse-step to pabsw"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xfff02000ffc000008ff03ffeff800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff82000ffc000009ff07ffeff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x010820000140000061107f0201800000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "pabsb.*" "reverse-step to pabsb"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xfff02000ffc000008ff03ffeff800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff82000ffc000009ff07ffeff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff00000ffc000008f402ffc80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "orps.*" "reverse-step to orps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xfff02000ffc000008ff03ffeff800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff80000ffc000001dd0505c79000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff00000ffc000008f402ffc80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "orpd.*" "reverse-step to orpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce802000000000000ef01ffeff800000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff80000ffc000001dd0505c79000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff00000ffc000008f402ffc80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "mulss.*" "reverse-step to mulss"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce802000000000000ef01ffefe811010.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff80000ffc000001dd0505c79000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff00000ffc000008f402ffc80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "mulsd.*" "reverse-step to mulsd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce802000000000000ef01ffefe811010.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff80000ffc00000ce80200000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff00000ffc000008f402ffc80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "mulps.*" "reverse-step to mulps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce802000000000000ef01ffefe811010.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff80000ffc00000ce80200000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff0000000000000005ffffe80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "mulpd.*" "reverse-step to mulpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce802000000000000ef01ffefe811010.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff00000ffc00000ff800000ff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff0000000000000005ffffe80000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "divss.*" "reverse-step to divss"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce802000000000000ef01ffefe811010.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff00000ffc00000ff800000ff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff0000000000000005ffffe01001fe0.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "divsd.*" "reverse-step to divsd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xfff00000ffc00000ff800000ff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff0000000000000005ffffe01001fe0.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "divps.*" "reverse-step to divps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ff800000ff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xfff0000000000000005ffffe01001fe0.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "divpd.*" "reverse-step to divpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ff800000ff800000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cvtpd2ps.*" "reverse-step to cvtpd2ps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cvtdq2ps.*" "reverse-step to cvtdq2ps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x00000000000000008000000080000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cvtpd2dq.*" "reverse-step to cvtpd2dq"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a090827262524ffffffff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0xce80200000000000ce80200000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cvtdq2ps.*" "reverse-step to cvtdq2ps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a090827262524ffffffff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xbff0000000000000bff0000000000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cvtdq2pd.*" "reverse-step to cvtdq2pd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a090827262524ffffffff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "comiss.*" "reverse-step to comiss"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a090827262524ffffffff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "comisd.*" "reverse-step to comisd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a090827262524ffffffff.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cmpss.*" "reverse-step to cmpss"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0000000000000000ffffffffffffffff.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cmpsd.*" "reverse-step to cmpsd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x00000000000000000000000000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0xffffffffffffffffffffffff00000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cmpps.*" "reverse-step to cmpps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x00000000000000000000000000000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "cmppd.*" "reverse-step to cmppd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "blendvps.*" "reverse-step to blendvps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "blendvpd.*" "reverse-step to blendvpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "blendps.*" "reverse-step to blendps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "blendpd.*" "reverse-step to blendpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "andps.*" "reverse-step to andps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x0f0e0d0c0b0a09082726252400000000.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "andpd.*" "reverse-step to andpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252400000000.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "addsubps.*" "reverse-step to addsubps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "addsubpd.*" "reverse-step to addsubpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050423222120.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "addss.*" "reverse-step to addss"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19182726252423222120.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "addsd.*" "reverse-step to addsd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "addps.*" "reverse-step to addps"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
+gdb_test "reverse-step" "addpd.*" "reverse-step to addpd"
+
+gdb_test "info register xmm0" \
+ "xmm0 .*uint128 = 0x0f0e0d0c0b0a09080706050403020100.*" \
+ "verify xmm0"
+
+gdb_test "info register xmm1" \
+ "xmm1 .*uint128 = 0x1f1e1d1c1b1a19181716151413121110.*" \
+ "verify xmm1"
+
+gdb_test "info register xmm2" \
+ "xmm2 .*uint128 = 0x2f2e2d2c2b2a29282726252423222120.*" \
+ "verify xmm2"
+
next prev parent reply other threads:[~2010-03-28 16:27 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-07 15:00 [RFA] " Hui Zhu
2009-12-07 16:54 ` Michael Snyder
2009-12-07 17:16 ` Michael Snyder
2009-12-07 17:43 ` Joel Brobecker
2009-12-07 17:54 ` Michael Snyder
2009-12-07 18:00 ` Joel Brobecker
2009-12-07 18:05 ` Michael Snyder
2009-12-08 5:51 ` Hui Zhu
2009-12-08 19:56 ` Michael Snyder
2009-12-07 18:08 ` Doug Evans
2009-12-08 17:43 ` Tom Tromey
2009-12-10 19:52 ` Michael Snyder
2009-12-11 15:00 ` Hui Zhu
2009-12-13 4:28 ` Hui Zhu
2009-12-13 10:35 ` Hui Zhu
2009-12-14 18:24 ` Michael Snyder
2009-12-15 1:47 ` Hui Zhu
2009-12-18 19:44 ` Michael Snyder
2010-01-08 16:07 ` Hui Zhu
2010-01-08 18:45 ` Michael Snyder
2010-01-09 12:28 ` [RFA/i386] " Joel Brobecker
2010-01-11 2:48 ` Hui Zhu
2010-01-11 4:05 ` Joel Brobecker
2010-01-12 1:38 ` Michael Snyder
2010-03-28 16:27 ` Hui Zhu [this message]
2010-03-29 1:35 ` Michael Snyder
2010-03-29 1:36 ` Michael Snyder
2010-03-29 9:25 ` Hui Zhu
2010-03-29 1:40 ` Michael Snyder
2010-03-29 2:23 ` Hui Zhu
2010-03-29 13:21 ` Hui Zhu
2010-03-29 17:52 ` Michael Snyder
2010-03-29 18:11 ` Michael Snyder
2010-03-30 6:29 ` Hui Zhu
2010-03-30 12:55 ` Hui Zhu
2010-04-01 15:36 ` Hui Zhu
2010-04-01 21:50 ` Michael Snyder
2010-04-02 5:14 ` Hui Zhu
2010-03-29 2:18 ` Michael Snyder
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=daef60381003280926g37f5b83fteec5fbbcc358af@mail.gmail.com \
--to=teawater@gmail.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
--cc=msnyder@vmware.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox