On Tue, 27 Oct 2009, Gabriel Michael Black wrote:

> Thanks. I have a half completed change that replaces cryptic ext constants
> with more meaningful names, and hopefully that makes those microops easier to
> work with in the future.

you're right, I missed that I had contrasting values for ext= 
within this patch.  I wasted a lot of time fiddling with options when I 
couldn't get the maddf instruction to work, only to realize later it was 
working fine, it was the movhpd that was breaking things.  I forgot to 
reset everything to sane values in the final version of the patch.

Any work that clarifies the uop situation a bit would be welcome.

Vince



> 
> Gabe
> 
> Quoting Vince Weaver <[email protected]>:
> 
> > 
> > This patch adds support for the haddpd sse instruction.
> > 
> > Attached is a simple test case (which depends on the movhpd patch I sent
> > earlier today).
> > 
> > 
> > # HG changeset patch
> > # User Vince Weaver <[email protected]>
> > # Date 1256679237 14400
> > # Node ID 71078e842148765616feba710e31616ee39d382c
> > # Parent  a3c85a29b838e0e15a459f64b2d83b821aacf520
> > Add support for haddpd instruction to x86
> > 
> > diff -r a3c85a29b838 -r 71078e842148
> > src/arch/x86/isa/decoder/two_byte_opcodes.isa
> > --- a/src/arch/x86/isa/decoder/two_byte_opcodes.isa Tue Oct 27 09:24:40
> > 2009 -0700
> > +++ b/src/arch/x86/isa/decoder/two_byte_opcodes.isa Tue Oct 27 17:33:57
> > 2009 -0400
> > @@ -707,7 +707,7 @@
> >                     }
> >                     // operand size (0x66)
> >                     0x1: decode OPCODE_OP_BOTTOM3 {
> > -                        0x4: WarnUnimpl::haddpd_Vo_Wo();
> > +                        0x4: HADDPD(Vo,Wo);
> >                         0x5: WarnUnimpl::hsubpd_Vo_Wo();
> >                         0x6: WarnUnimpl::movd_Ed_Vd();
> >                         0x7: WarnUnimpl::movdqa_Wo_Vo();
> > diff -r a3c85a29b838 -r 71078e842148
> > src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
> > ---
> > a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
> > Tue Oct 27 09:24:40 2009 -0700
> > +++
> > b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/horizontal_addition.py
> > Tue Oct 27 17:33:57 2009 -0400
> > @@ -55,5 +55,24 @@
> > 
> > microcode = '''
> > # HADDPS
> > -# HADDPD
> > +
> > +def macroop HADDPD_XMM_XMM {
> > +    maddf xmml, xmmh , xmml, size=8, ext=0
> > +    maddf xmmh, xmmlm, xmmhm, size=8, ext=0
> > +};
> > +
> > +def macroop HADDPD_XMM_M {
> > +    ldfp ufp1, seg, sib, disp, dataSize=8
> > +    ldfp ufp2, seg, sib, "DISPLACEMENT+8", dataSize=8
> > +    maddf xmml, xmmh, xmml, size=8, ext=1
> > +    maddf xmmh, ufp1, ufp2, size=8, ext=1
> > +};
> > +
> > +def macroop HADDPD_XMM_P {
> > +    rdip t7
> > +    ldfp ufp1, seg, riprel, disp, dataSize=8
> > +    ldfp ufp2, seg, riprel, "DISPLACEMENT+8", dataSize=8
> > +    maddf xmml, xmmh, xmml, size=8, ext=1
> > +    maddf xmmh, ufp1, ufp2, size=8, ext=1
> > +};
> > '''
> 
> 
> 

-- 
/*  Vince Weaver  [email protected]  http://csl.cornell.edu/~vince  */

main(){char O,o[66]="|\n\\/_  ",*I=o+7,l[]="B!FhhBHCWE9C?cJFKET$+h'Iq*chT"
,i=0,_;while(_=l[i++])for(O=0;O++<_>>5;)*I=*(I++-(_&31));*I=0;puts(o+5);}
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to