diff options
Diffstat (limited to 'src/arch/x86/isa/insts')
-rw-r--r-- | src/arch/x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py index 2e9aebfdc..00b191eca 100644 --- a/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py +++ b/src/arch/x86/isa/insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py @@ -37,5 +37,24 @@ microcode = ''' # ADDSUBPS -# ADDSUBPD + +def macroop ADDSUBPD_XMM_XMM { + msubf xmml, xmml, xmmlm, size=8, ext=Scalar + maddf xmmh, xmmh, xmmhm, size=8, ext=Scalar +}; + +def macroop ADDSUBPD_XMM_M { + ldfp ufp1, seg, sib, disp, dataSize=8 + ldfp ufp2, seg, sib, "DISPLACEMENT+8", dataSize=8 + msubf xmmlm, xmml, ufp1, size=8, ext=0 + maddf xmmhm, xmmh, ufp2, size=8, ext=0 +}; + +def macroop ADDSUBPD_XMM_P { + rdip t7 + ldfp ufp1, seg, sib, disp, dataSize=8 + ldfp ufp2, seg, sib, "DISPLACEMENT+8", dataSize=8 + msubf xmmlm, xmml, ufp1, size=8, ext=0 + maddf xmmhm, xmmh, ufp2, size=8, ext=0 +}; ''' |