You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
adds semantics and supporting code for several x86 instructions
Adds the following instructions:
- shufps
- pmuldq
- [v]packusdw
- [v]packuswb
- [v]packssdw
- [v]packsswb
- vzeroupper
- movntd
- xchgb
The generated code for signed and unsigned saturation (the pack*
family of instructions) is thoroughly optimized to minimize branching
and comparison, which negatively affects analysis performance. Both
signed and unsigned saturation are implemented as a lisp primitive
that generates pure code with a single ite instruction and any
comparisons are made with zero, i.e., no inequalities.
To following extra changes support the added instructions:
1) [NEW] Extend x86 CPU family definition with 8-bit registers, e.g.,
AL,BL,CL,DL,AH,BH,CH,DH,SIL,DIL,BPL, and SPL.
2) [NEW] Added EFLAGS and RFLAGS aliases to the set of flag registers.
3) [NEW] It is now possible to use bool registers in the aliasing
specifications.
4) [NEW] Added system and control register flags.
5) [FIX] Fixed a bug with incorrect reification of higher parts of
aliased registers.
6) [NEW] Added a `dolist` macro to Primus Lisp.
7) [NEW] Added the `unquote` primitive to Primus Lisp.
8) [NEW] Added the `cast-saturate` primitive to Primus Lisp.
9) [NEW] Improved BIL code generation in case of empty if statements.
0 commit comments