aboutsummaryrefslogtreecommitdiff
path: root/arm.risu
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2011-01-19 19:14:05 +0000
committerPeter Maydell <peter.maydell@linaro.org>2011-01-19 19:14:05 +0000
commitf60b88d4b8d88f21cefa588df3c9d4ecf39eb4f4 (patch)
treecc45573bfbb8e2978dec3bc0742acde1320c3048 /arm.risu
parent8d9fd8e9c609ec93ad2844d50d3c8fd912ad7377 (diff)
Add ARM patterns: VMLAL, VMLSL, VQDMLAL, VQDMLSL, VMULL, VQDMULL
Add patterns for VMLAL, VMLSL, VQDMLAL, VQDMLSL, VMULL, VQDMULL (both scalar and non-scalar forms)
Diffstat (limited to 'arm.risu')
-rw-r--r--arm.risu20
1 files changed, 20 insertions, 0 deletions
diff --git a/arm.risu b/arm.risu
index 76a7da8..1815660 100644
--- a/arm.risu
+++ b/arm.risu
@@ -134,3 +134,23 @@ USAT A1 cond:4 0110111 satimm:5 rd:4 imm:5 sh 0 1 rn:4
SSAT A1 cond:4 0110101 satimm:5 rd:4 imm:5 sh 0 1 rn:4
SSAT16 A1 cond:4 01101010 satimm:4 rd:4 1111 0011 rn:4
USAT16 A1 cond:4 01101110 satimm:4 rd:4 1111 0011 rn:4
+
+# VMLAL, VMLSL, VQDMLAL, VQDMLSL, VMULL, VQDMULL
+# NB that enc A1 is actually VMLA/VMLS only, A2 is VMLAL/VMLSL only
+VMLAL A2 1111 001 u 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 A1 1111 0010 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 A2 1111 001 u 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 A1 1111 0010 1 d sz:2 vn:4 vd:3 0 1101 n 0 m 0 vm:4 { ($sz != 3) && ($sz != 0); }
+
+# Scalar forms, VMLAL, VMLSL, VQDMLAL, VQDMLSL, VMULL, VQDMULL
+# VMLAL/VMLSL scalar
+VMLAL_scalar A2 1111 001 u 1 d sz:2 vn:4 vd:3 0 0 op 1 0 n 1 m 0 vm:4 { ($sz != 3) && ($sz != 0); }
+# VQDMLAL/VQDMLSL scalar
+VQDMLAL_scalar A2 1111 0010 1 d sz:2 vn:4 vd:3 0 0 op 11 n 1 m 0 vm:4 { ($sz != 3) && ($sz != 0); }
+# VMULL scalar
+VMULL_scalar A2 1111 001 u 1 d sz:2 vn:4 vd:3 0 1010 n 1 m 0 vm:4 { ($sz != 3) && ($sz != 0); }
+# VQDMULL scalar
+VQDMULL_scalar A2 1111 0010 1 d sz:2 vn:4 vd:3 0 1011 n 1 m 0 vm:4 { ($sz != 3) && ($sz != 0); }