aboutsummaryrefslogtreecommitdiff
path: root/thumb.risu
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2011-02-11 13:37:01 +0000
committerPeter Maydell <peter.maydell@linaro.org>2011-02-11 13:37:01 +0000
commitf0d351116770ebdc498021106f6ad14702647053 (patch)
treee1e9ae3d8d53b145516be41eba42ebaa10ae362b /thumb.risu
parentd0da4e260e95e8dcc6550e9f41d671e7a41bc7a5 (diff)
Add Thumb patterns for some neon multiplies.
Diffstat (limited to 'thumb.risu')
-rw-r--r--thumb.risu10
1 files changed, 10 insertions, 0 deletions
diff --git a/thumb.risu b/thumb.risu
index c7cbd9b..81a52ef 100644
--- a/thumb.risu
+++ b/thumb.risu
@@ -53,3 +53,13 @@ SMMUL T1 11111 0110 101 rn:4 1111 rd:4 000 r rm:4
# load space, where Rt == 15).
# The constraint is to avoid UNPREDICTABLE space
HINTSPACE T1 111 1100 op1:2 0 z 1 y:4 1111 op2:6 any:6 { ($y == 15) || (($op1 & 1) != 0) || !((($op2 & 0x24) == 0x24) || (($op2 & 0x3c) == 0x38)) ; }
+
+# VMLAL, VMLSL, VQDMLAL, VQDMLSL, VMULL, VQDMULL
+# NB that enc T1 is actually VMLA/VMLS only, T2 is VMLAL/VMLSL only
+VMLAL T2 111 u 1111 1 d sz:2 vn:4 vd:3 0 10 op 0 n 0 m 0 vm:4 { $sz != 3; }
+# VQDMLAL and VQDMLSL (not scalar form)
+VQDLAL T1 1110 1111 1 d sz:2 vn:4 vd:3 0 10 op 1 n 0 m 0 vm:4 { ($sz != 3) && ($sz != 0); }
+# VMULL (excludes the polynomial case!)
+VMULL T2 111 u 1111 1 d sz:2 vn:4 vd:3 0 11 0 0 n 0 m 0 vm:4 { ($sz != 3) && ($sz != 0); }
+# VQDMULL (not scalar form)
+VQDMULL T1 1110 1111 1 d sz:2 vn:4 vd:3 0 1101 n 0 m 0 vm:4 { ($sz != 3) && ($sz != 0); }