diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2009-08-17 20:22:56 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2009-08-17 20:22:56 -0700 |
commit | 90dc1abd0b95efc37f0bb12ed1dddd22e0d5d914 (patch) | |
tree | 4267485ef235067dbb85811168371f6fed9eeb2e /src/arch/x86/isa/insts/simd128 | |
parent | 90786e43fc8ba16d6e1941ca996e82e94f186e5e (diff) | |
download | gem5-90dc1abd0b95efc37f0bb12ed1dddd22e0d5d914.tar.xz |
X86: Implement the instructions that move sign bits.
Diffstat (limited to 'src/arch/x86/isa/insts/simd128')
-rw-r--r-- | src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py | 13 | ||||
-rw-r--r-- | src/arch/x86/isa/insts/simd128/integer/data_transfer/move_mask.py | 6 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py index abd1c7327..5c5fb81d2 100644 --- a/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py +++ b/src/arch/x86/isa/insts/simd128/floating_point/data_transfer/move_mask.py @@ -54,6 +54,15 @@ # Authors: Gabe Black microcode = ''' -# MOVMSKPS -# MOVMSKPD +def macroop MOVMSKPS_R_XMM { + limm reg, 0 + movsign reg, xmmlm, size=4, ext=0 + movsign reg, xmmhm, size=4, ext=1 +}; + +def macroop MOVMSKPD_R_XMM { + limm reg, 0 + movsign reg, xmmlm, size=8, ext=0 + movsign reg, xmmhm, size=8, ext=1 +}; ''' diff --git a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_mask.py b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_mask.py index 558391c6a..0be1229b4 100644 --- a/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_mask.py +++ b/src/arch/x86/isa/insts/simd128/integer/data_transfer/move_mask.py @@ -54,5 +54,9 @@ # Authors: Gabe Black microcode = ''' -# PMOVMSKB +def macroop PMOVMSKB_R_XMM { + limm reg, 0 + movsign reg, xmmlm, size=1, ext=0 + movsign reg, xmmhm, size=1, ext=1 +}; ''' |