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.

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
> +};
>  '''


_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to