diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2019-01-08 17:49:42 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2019-01-11 09:43:46 +0100 |
| commit | 071a5cbeda791c66b7e4d91e37d79d587aba8fa3 (patch) | |
| tree | 56aeb5e9af8055d99d71057e6862aaebaff3340d | |
| parent | 9818892bbacac9471d352d4a083a5ed14fd7f87a (diff) | |
| download | miasm-071a5cbeda791c66b7e4d91e37d79d587aba8fa3.tar.gz miasm-071a5cbeda791c66b7e4d91e37d79d587aba8fa3.zip | |
Aarch64: add [su]mul instructions
| -rw-r--r-- | miasm2/arch/aarch64/sem.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/miasm2/arch/aarch64/sem.py b/miasm2/arch/aarch64/sem.py index 84f004b5..f22f0c07 100644 --- a/miasm2/arch/aarch64/sem.py +++ b/miasm2/arch/aarch64/sem.py @@ -1237,6 +1237,37 @@ def casp(ir, instr, arg1, arg2, arg3): return e, [blk_store, blk_do] +@sbuild.parse +def umaddl(arg1, arg2, arg3, arg4): + arg1 = arg2.zeroExtend(arg1.size) * arg3.zeroExtend(arg1.size) + arg4 + + +@sbuild.parse +def umsubbl(arg1, arg2, arg3, arg4): + arg1 = arg2.zeroExtend(arg1.size) * arg3.zeroExtend(arg1.size) + arg4 + + +@sbuild.parse +def umull(arg1, arg2, arg3): + arg1 = (arg2.zeroExtend(64) * arg3.zeroExtend(64)) + + +@sbuild.parse +def umulh(arg1, arg2, arg3): + arg1 = (arg2.zeroExtend(128) * arg3.zeroExtend(128))[64:] + + +@sbuild.parse +def smulh(arg1, arg2, arg3): + arg1 = (arg2.signExtend(128) * arg3.signExtend(128))[64:] + + +@sbuild.parse +def smull(arg1, arg2, arg3): + arg1 = (arg2.signExtend(64) * arg3.signExtend(64))[64:] + + + mnemo_func = sbuild.functions mnemo_func.update({ 'and': and_l, |