Add some support for unpack; no symbolic implementation yet.

This commit is contained in:
Iavor Diatchki 2018-03-26 18:51:19 -07:00
parent cb9cef128e
commit f54f0a13ba
2 changed files with 8 additions and 0 deletions

View File

@ -252,6 +252,12 @@ data AVXOp2 = VPAnd -- ^ Bitwise and
* upper 4 bits -> index in 2nd op;
Indexes are always 0 or 1. -}
| VPUnpackLQDQ
-- ^ A,B,C,D + P,Q,R,S = C,R,D,S
-- This one is for DQ, i.e., 64-bit things
-- but there are equivalents for all sizes, so we should
-- probably parameterize on size.
data AVXPointWiseOp2 =
PtAdd -- ^ Pointwise add; overflow wraps around; no overflow flags
@ -273,6 +279,7 @@ instance Show AVXOp2 where
VAESEnc -> "vaesenc"
VAESEncLast -> "vaesenclast"
VPCLMULQDQ i -> "vpclmulqdq_" ++ show i
VPUnpackLQDQ -> "vpunpacklqdq"
instance Show AVXPointWiseOp2 where
show x = case x of

View File

@ -215,6 +215,7 @@ all_instructions =
, avxOp2 "vaesenc" VAESEnc
, avxOp2 "vaesenclast" VAESEncLast
, avxOp2 "vpunpcklqdq" VPUnpackLQDQ
, avx3 "vextractf128" $ \arg1 arg2 arg ->
do SomeBV vec <- getSomeBVValue arg2