about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2019-01-08 17:49:42 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2019-01-11 09:43:46 +0100
commit071a5cbeda791c66b7e4d91e37d79d587aba8fa3 (patch)
tree56aeb5e9af8055d99d71057e6862aaebaff3340d
parent9818892bbacac9471d352d4a083a5ed14fd7f87a (diff)
downloadmiasm-071a5cbeda791c66b7e4d91e37d79d587aba8fa3.tar.gz
miasm-071a5cbeda791c66b7e4d91e37d79d587aba8fa3.zip
Aarch64: add [su]mul instructions
-rw-r--r--miasm2/arch/aarch64/sem.py31
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,