This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: PATCH: Use QA16WORD for punpcklxxx in x86 Intel mode disassembler
- From: "H.J. Lu" <hjl at lucon dot org>
- To: Christian Ludloff <ludloff at sandpile dot org>
- Cc: binutils at sources dot redhat dot com, jbeulich at novell dot com
- Date: Sun, 29 Jul 2007 11:31:59 -0700
- Subject: Re: PATCH: Use QA16WORD for punpcklxxx in x86 Intel mode disassembler
- References: <46ABCDF5.183B@sandpile.org> <20070728231855.GA25693@lucon.org> <46ABD8D9.6A55@sandpile.org> <20070729000354.GA13978@lucon.org> <46ABE037.2130@sandpile.org> <20070729152914.GA28764@lucon.org>
On Sun, Jul 29, 2007 at 08:29:14AM -0700, H.J. Lu wrote:
> On Sat, Jul 28, 2007 at 05:32:55PM -0700, Christian Ludloff wrote:
> > H.J.,
> >
> > > > > Did you try load punpcklxxx from 8byte aligned, not 16byte aligned
> > > > > memory?
> > > >
> > > > What for?
> > > >
> > > > (That merely causes the expected GP(0), due to lack of 128-bit alignment.)
> > >
> > > That is one difference between m64 and m128.
> >
> > Sure. And that 128-bit alignment requirement will start to disappear later
> > this year, when AMD's Barcelona introduces misaligned SSE support.
> >
> > > That is why punpcklxxx has m128, not m64.
> >
> > Not really.
> >
> > PUNPCKL merely got lumped into the m128 category for convenience; however,
> > it was immediately implemented differently from the rest of SSE2 -- the P4
> > only accesses the low 64 bits, not the full 128 bits.
> >
> > The 128-bit alignment requirement/check is but a relict of the days when a
> > processor had to split 128-bit accesses into two 64-bit chunks (and didn't
> > want to cope with further splitting to handle misalignment).
> >
>
> We can't say punpcklxxx takes m64 as long as some processors only
> work with 16byte alignment. "XMMWORD PTR" isn't right either since
> only 8 bytes are loaded. I invented QA16WORD. Any comments?
>
Scrap it. I checked with our HW people. Some Intel processors
fetch 16byte from memory for punpcklxxx.
H.J.