summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--notes/encoding_table10
-rw-r--r--notes/grouped_encodings8
-rw-r--r--notes/reordered_encodings10
-rw-r--r--notes/todo381
-rw-r--r--src/display.rs11
-rw-r--r--src/lib.rs42
-rw-r--r--tests/from_brain.rs79
7 files changed, 319 insertions, 222 deletions
diff --git a/notes/encoding_table b/notes/encoding_table
index e2c2fba..65a17de 100644
--- a/notes/encoding_table
+++ b/notes/encoding_table
@@ -1228,10 +1228,10 @@ A L I A S A L I A S A L I A S A L I A S A L I A S | Rd=zxtb(Rs)
|1 1 1 0|1 0 0 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt):<<1:rnd:sat - XTYPE COMPLEX/slot 3
|1 1 1 0|1 0 0 1|1 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt*):<<1:rnd:sat - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
|ICLASS |RegType|MajOp|s5 |Parse| |MinOp|d5 |
|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vcmpyr(Rss,Rtt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vcmpyi(Rss,Rtt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
@@ -1441,7 +1441,7 @@ A L I A S A L I A S A L I A S A L I A S A L I A S | Rd=zxtb(Rs)
|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rdd=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
-|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
+|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpyweh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|N 1 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
|1 1 1 0|1 1 0 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=mpy(Rs,Rt):rnd - XTYPE FP/slot 2,3
diff --git a/notes/grouped_encodings b/notes/grouped_encodings
index 8654bd2..04a3808 100644
--- a/notes/grouped_encodings
+++ b/notes/grouped_encodings
@@ -1222,10 +1222,10 @@ A L I A S A L I A S A L I A S A L I A S A L I A S | Rd=zxtb(Rs)
|1 1 1 0|1 0 0 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt):<<1:rnd:sat - XTYPE COMPLEX/slot 3
|1 1 1 0|1 0 0 1|1 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt*):<<1:rnd:sat - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
|ICLASS |RegType|MajOp|s5 |Parse| |MinOp|d5 |
|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vcmpyr(Rss,Rtt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vcmpyi(Rss,Rtt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
diff --git a/notes/reordered_encodings b/notes/reordered_encodings
index ab8d5ee..44dad4f 100644
--- a/notes/reordered_encodings
+++ b/notes/reordered_encodings
@@ -1318,15 +1318,15 @@ A L I A S A L I A S A L I A S A L I A S A L I A S | Rd=zxtb(Rs)
|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |- t t t t t|0 1 0|x x x x x| Rxx+=vrsadub(Rss,rtt) - XTYPE ALU/slot 2,3
|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vraddub(Rss,Rtt) - XTYPE ALU/slot 2,3
|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vcmpyi(Rss,Rtt):sat - XTYPE COMPLEX/slot 2,3
-|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
-|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vrmpybu(Rss,Rtt) - XTYPE FP/slot 2,3
-|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rxx+=dfmpyhh(Rss,Rtt) - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|1 0 1|s s s s s| P P |0 t t t t t|0 e e|x x x x x| Rxx,Pe=vacsh(Rss,Rtt) - XTYPE ALU/slot 2,3
|1 1 1 0|1 0 1 0|1 0 1|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vrcmpys(Rss,Rtt):<<1:sat:raw:hi - XTYPE COMPLEX/slot 2,3
|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vrmpybsu(Rss,Rtt) - XTYPE FP/slot 2,3
-|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
+|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
|1 1 1 0|1 0 1 0|1 1 1|s s s s s| P P |0 t t t t t|0 e e|d d d d d| Rdd,Pe=vminub(Rtt,Rss) - XTYPE ALU/slot 2,3
|1 1 1 0|1 0 1 0|1 1 1|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vrcmpys(Rss,Rtt):<<1:sat:raw:lo - XTYPE COMPLEX/slot 2,3
|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vdmpy(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
@@ -1334,7 +1334,7 @@ A L I A S A L I A S A L I A S A L I A S A L I A S | Rd=zxtb(Rs)
|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vmpyeh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywoh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyweh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
+|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpyweh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywoh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|N 1 0|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyweuh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
|1 1 1 0|1 0 1 0|N 1 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywouh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
diff --git a/notes/todo b/notes/todo
index 6ae5906..a274ecd 100644
--- a/notes/todo
+++ b/notes/todo
@@ -1225,198 +1225,195 @@ A L I A S A L I A S A L I A S A L I A S A L I A S | Rd=zxtb(Rs)
-test|1 1 1 0|0 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 0 0|x x x x x| Rxx+=mpy(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 0 1|x x x x x| Rxx+=mpy(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 1 0|x x x x x| Rxx+=mpy(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 1 1|x x x x x| Rxx+=mpy(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 0 0|x x x x x| Rxx-=mpy(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 0 1|x x x x x| Rxx-=mpy(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 1 0|x x x x x| Rxx-=mpy(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 1 1|x x x x x| Rxx-=mpy(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 0|s s s s s| P P |- t t t t t|0 0 0|x x x x x| Rxx+=mpyu(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 0|s s s s s| P P |- t t t t t|0 0 1|x x x x x| Rxx+=mpyu(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 0|s s s s s| P P |- t t t t t|0 1 0|x x x x x| Rxx+=mpyu(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 0|s s s s s| P P |- t t t t t|0 1 1|x x x x x| Rxx+=mpyu(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 1|s s s s s| P P |- t t t t t|0 0 0|x x x x x| Rxx-=mpyu(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 1|s s s s s| P P |- t t t t t|0 0 1|x x x x x| Rxx-=mpyu(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 1|s s s s s| P P |- t t t t t|0 1 0|x x x x x| Rxx-=mpyu(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 0|N 1 1|s s s s s| P P |- t t t t t|0 1 1|x x x x x| Rxx-=mpyu(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rxx+=mpy(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rxx-=mpy(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|0 1 0|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rxx+=mpyu(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|0 1 1|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rxx-=mpyu(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=cmpyi(Rs,Rt) - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|0 1 1 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vmpyh(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|1 0 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vmpybu(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vmpybsu(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyr(Rs,Rt) - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|0 1 1 1|N 0 0|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|N 1 1|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyhsu(Rs,Rt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|N 0 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=cmpy(Rs,Rt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|0 1 1 1|N 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=cmpy(Rs,Rt*)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|0 1 1 1|N 0 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx-=cmpy(Rs,Rt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|0 1 1 1|0 0 1|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx^=pmpyw(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|1 0 1|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx^=vpmpyh(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|0 1 1 1|N 1 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx-=cmpy(Rs,Rt*)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|0 0 0|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=vrmpyh(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|0 0 0|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rdd=dfadd(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|0 0 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rdd=vabsdiffw(Rtt,Rss) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 0|0 0 1|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rdd=dfmax(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|0 1 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rdd=vraddub(Rss,Rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 0|0 1 0|s s s s s| P P |- t t t t t|0 1 0|d d d d d| Rdd=vrsadub(Rss,Rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 0|0 1 0|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rdd=dfmpyfix(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|0 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rdd=vabsdiffh(Rtt,Rss) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rdd=vrmpyu(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rdd=dfsub(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rdd=vabsdiffub(Rtt,Rss) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 1|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rdd=vdmpybsu(Rss,Rtt):sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 1|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rdd=dfmpyll(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 1 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rdd=vrmpysu(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rdd=dfmin(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rdd=vabsdiffb(Rtt,Rss) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 0|1 1 1|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rdd=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 0|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rdd=vdmpy(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 0|s s s s s| P P |0 t t t t t|1 0 1|d d d d d| Rdd=vmpyweh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 0|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vmpyeh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 0|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rdd=vmpywoh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 0 1|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rdd=vrcmpys(Rss,Rtt):<<1:sat:raw:hi - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|1 0 1|d d d d d| Rdd=vmpyweh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vcmpyr(Rss,Rtt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rdd=vmpywoh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rdd=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 0 1|d d d d d| Rdd=vmpyweuh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rdd=vcmpyi(Rss,Rtt)[:<<N]:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|N 1 0|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rdd=vmpywouh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|1 1 1|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rdd=vrcmpys(Rss,Rtt):<<1:sat:raw:lo - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 0|N 1 1|s s s s s| P P |0 t t t t t|1 0 1|d d d d d| Rdd=vmpyweuh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 0|N 1 1|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rdd=vmpywouh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 0 1|0 - -|s s s s s| P P |0 t t t t t|- 0 1|d d d d d| Rd=vradduh(Rss,Rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 1|0 - 1|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rd=vraddh(Rss,Rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 0 1|0 0 0|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rd=cmpyiw(Rss,Rtt*):<<1:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyiw(Rss,Rtt):<<1:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|0 1 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt):<<1:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|0 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt*):<<1:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|1 - 1|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rd=vrcmpys(Rss,Rtt):<<1:rnd:sat:raw:hi - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 1|1 - 1|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rd=vrcmpys(Rss,Rtt):<<1:rnd:sat:raw:lo - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 0 1|1 0 0|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rd=cmpyiw(Rss,Rtt*):<<1:rnd:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|1 0 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyiw(Rss,Rtt):<<1:rnd:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt):<<1:rnd:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|1 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=cmpyrw(Rss,Rtt*):<<1:rnd:sat - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 0 1|N 0 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=vdmpy(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|0 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=vrmpyh(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|0 0 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rxx+=dfmpylh(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|0 0 1|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vdmpybsu(Rss,Rtt):sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|0 0 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=vmpyeh(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|0 0 1|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vcmpyr(Rss,Rtt):sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 1 0|0 0 1|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vcmpyr(Rss,Rtt):sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vraddub(Rss,Rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |- t t t t t|0 1 0|x x x x x| Rxx+=vrsadub(Rss,rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vcmpyi(Rss,Rtt):sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 1 0|0 1 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 1 0|0 1 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+cmpyiw(Rss,Rtt) - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vrmpybu(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt) - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 1 0|1 0 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rxx+=dfmpyhh(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|1 0 1|s s s s s| P P |0 t t t t t|0 e e|x x x x x| Rxx,Pe=vacsh(Rss,Rtt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 1 0|1 0 1|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vrcmpys(Rss,Rtt):<<1:sat:raw:hi - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rxx+=vrmpybsu(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rxx+=cmpyrw(Rss,Rtt*) - XTYPE COMPLEX/slot 3
-test|1 1 1 0|1 0 1 0|1 1 1|s s s s s| P P |0 t t t t t|0 e e|d d d d d| Rdd,Pe=vminub(Rtt,Rss) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 0 1 0|1 1 1|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vrcmpys(Rss,Rtt):<<1:sat:raw:lo - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rxx+=vdmpy(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyweh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vmpyeh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywoh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyweh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 0 1|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywoh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 1 0|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyweuh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 1 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywouh(Rss,Rtt)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 1 1|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rxx+=vmpyweuh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 1 1|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rxx+=vrmpywoh(Rss,Rtt)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 0|N 1 1|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rxx+=vmpywouh(Rss,Rtt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=sfsub(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 1 1|d d d d d| Rd=sfadd(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|0 1 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=sfmpy(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|1 0 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=sfmax(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|1 0 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=sfmin(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=sffixupn(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=sffixupd(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 0 1 1|1 1 1|s s s s s| P P |0 t t t t t|1 e e|d d d d d| Rd,Pe=sfrecipa(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|0 0 0|d d d d d| Rd=mpy(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|0 0 1|d d d d d| Rd=mpy(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|0 1 0|d d d d d| Rd=mpy(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|0 1 1|d d d d d| Rd=mpy(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|1 0 0|d d d d d| Rd=mpy(Rs.L,Rt.L)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|1 0 1|d d d d d| Rd=mpy(Rs.L,Rt.H)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|1 1 0|d d d d d| Rd=mpy(Rs.H,Rt.L)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 0|s s s s s| P P |- t t t t t|1 1 1|d d d d d| Rd=mpy(Rs.H,Rt.H)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|0 0 0|d d d d d| Rd=mpy(Rs.L,Rt.L)[:<<N]:rnd - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|0 0 1|d d d d d| Rd=mpy(Rs.L,Rt.H)[:<<N]:rnd - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|0 1 0|d d d d d| Rd=mpy(Rs.H,Rt.L)[:<<N]:rnd - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|0 1 1|d d d d d| Rd=mpy(Rs.H,Rt.H)[:<<N]:rnd - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|1 0 0|d d d d d| Rd=mpy(Rs.L,Rt.L)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|1 0 1|d d d d d| Rd=mpy(Rs.L,Rt.H)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|1 1 0|d d d d d| Rd=mpy(Rs.H,Rt.L)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 0|N 0 1|s s s s s| P P |- t t t t t|1 1 1|d d d d d| Rd=mpy(Rs.H,Rt.H)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=mpyi(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|1 0 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=mpy(Rs,Rt.H):<<1:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|1 1 1|s s s s s| P P |0 t t t t t|0 0 0|d d d d d| Rd=mpy(Rs,Rt):<<1:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=mpy(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=mpy(Rs,Rt):rnd - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|0 1 0|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=mpyu(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|0 1 1|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=mpysu(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|1 0 1|s s s s s| P P |0 t t t t t|0 0 1|d d d d d| Rd=mpy(Rs,Rt.L):<<1:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|1 0 1|s s s s s| P P |0 t t t t t|0 1 0|d d d d d| Rd=mpy(Rs,Rt):<<1 - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|1 0 1|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rd=mpy(Rs,Rt.H):<<1:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|1 1 1|s s s s s| P P |0 t t t t t|1 0 0|d d d d d| Rd=mpy(Rs,Rt.L):<<1:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 0 1|N 0 1|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rd=cmpy(Rs,Rt)[:<<N]:rnd:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 1 0 1|N 1 1|s s s s s| P P |0 t t t t t|1 1 0|d d d d d| Rd=cmpy(Rs,Rt*)[:<<N]:rnd:sat - XTYPE COMPLEX/slot 2,3
-test|1 1 1 0|1 1 0 1|N 0 1|s s s s s| P P |0 t t t t t|1 1 1|d d d d d| Rd=vmpyh(Rs,Rt)[:<<N]:rnd:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 0 0|d d d d d| Rx+=mpy(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 0 1|d d d d d| Rx+=mpy(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 1 0|d d d d d| Rx+=mpy(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|0 1 1|d d d d d| Rx+=mpy(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|1 0 0|d d d d d| Rx+=mpy(Rs.L,Rt.L)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|1 0 1|d d d d d| Rx+=mpy(Rs.L,Rt.H)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|1 1 0|d d d d d| Rx+=mpy(Rs.H,Rt.L)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 0|s s s s s| P P |- t t t t t|1 1 1|d d d d d| Rx+=mpy(Rs.H,Rt.H)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 0 0|d d d d d| Rx-=mpy(Rs.L,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 0 1|d d d d d| Rx-=mpy(Rs.L,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 1 0|d d d d d| Rx-=mpy(Rs.H,Rt.L)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|0 1 1|d d d d d| Rx-=mpy(Rs.H,Rt.H)[:<<N] - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|1 0 0|d d d d d| Rx-=mpy(Rs.L,Rt.L)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|1 0 1|d d d d d| Rx-=mpy(Rs.L,Rt.H)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|1 1 0|d d d d d| Rx-=mpy(Rs.H,Rt.L)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 0|N 0 1|s s s s s| P P |- t t t t t|1 1 1|d d d d d| Rx-=mpy(Rs.H,Rt.H)[:<<N]:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rx+=mpyi(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rx+=add(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rx+=sub(Rt,Rs) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|1 0 0|x x x x x| Rx+=sfmpy(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|1 0 1|x x x x x| Rx-=sfmpy(Rss,Rtt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|1 1 0|x x x x x| Rx+=sfmpy(Rs,Rt):lib - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 0|s s s s s| P P |0 t t t t t|1 1 1|x x x x x| Rx-=sfmpy(Rs,Rt):lib - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rx|=and(Rs,~Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 1|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rx&=and(Rs,~Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 0 1|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rx^=and(Rs,~Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 0|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rx&=and(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rx&=or(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rx&=xor(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rx|=and(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 1|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rx+=mpy(Rs,Rt):<<1:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 1|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rx-=mpy(Rs,Rt):<<1:sat - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|0 1 1|s s s s s| P P |0 t t t t t|1 u u|x x x x x| Rx+=sfmpy(Rs,Rt,Pu):scale - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|1 0 0|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rx-=mpyi(Rs,Rt) - XTYPE FP/slot 2,3
-test|1 1 1 0|1 1 1 1|1 0 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rx-=add(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|1 0 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rx^=xor(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 0|x x x x x| Rx|=or(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 0 1|x x x x x| Rx|=xor(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 1 0|x x x x x| Rx^=and(Rs,Rt) - XTYPE ALU/slot 2,3
-test|1 1 1 0|1 1 1 1|1 1 0|s s s s s| P P |0 t t t t t|0 1 1|x x x x x| Rx^=or(Rs,Rt) - XTYPE ALU/slot 2,3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/display.rs b/src/display.rs
index 5ce3d80..6349d4c 100644
--- a/src/display.rs
+++ b/src/display.rs
@@ -146,6 +146,16 @@ impl fmt::Display for Instruction {
return write!(f, "{} = add(clb({}), {})", self.dest.as_ref().unwrap(),
self.sources[0], self.sources[1]);
}
+ Opcode::Vacsh => {
+ return write!(f, "{}, {} = {}({}, {})",
+ self.dest.as_ref().unwrap(), self.alt_dest.as_ref().unwrap(),
+ self.opcode, self.sources[0], self.sources[1]);
+ }
+ Opcode::Vminub => {
+ return write!(f, "{}, {} = {}({}, {})",
+ self.dest.as_ref().unwrap(), self.alt_dest.as_ref().unwrap(),
+ self.opcode, self.sources[0], self.sources[1]);
+ }
Opcode::SfRecipa => {
return write!(f, "{}, {} = {}({}, {})",
self.dest.as_ref().unwrap(), self.alt_dest.as_ref().unwrap(),
@@ -871,6 +881,7 @@ impl fmt::Display for Opcode {
Opcode::Vmpyeh => { f.write_str("vmpyeh") },
Opcode::Vmpyweh => { f.write_str("vmpyweh") },
Opcode::Vmpywoh => { f.write_str("vmpywoh") },
+ Opcode::Vrmpyweh => { f.write_str("vrmpyweh") },
Opcode::Vrmpywoh => { f.write_str("vrmpywoh") },
Opcode::Vrmpyu => { f.write_str("vrmpyu") },
Opcode::Vrmpysu => { f.write_str("vrmpysu") },
diff --git a/src/lib.rs b/src/lib.rs
index 2e1aa74..0b94231 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -281,8 +281,6 @@ enum RoundingMode {
Round,
Cround,
Raw,
- Hi,
- Lo,
Pos,
Neg,
}
@@ -293,8 +291,6 @@ impl RoundingMode {
RoundingMode::Round => ":rnd",
RoundingMode::Cround => ":crnd",
RoundingMode::Raw => ":raw",
- RoundingMode::Lo => ":lo",
- RoundingMode::Hi => ":hi",
RoundingMode::Pos => ":pos",
RoundingMode::Neg => ":neg",
}
@@ -600,7 +596,6 @@ pub enum Opcode {
Cmpyrwh,
Cmpyi,
Cmpyr,
- Vacsh,
Vcmpyi,
Vcmpyr,
Vmpybu,
@@ -706,7 +701,6 @@ pub enum Opcode {
Vmaxb,
Vmaxub,
Vminb,
- Vminub,
Vminuw,
Vminh,
Vminuh,
@@ -820,6 +814,7 @@ pub enum Opcode {
Vmpywoh,
Vmpyweuh,
Vmpywouh,
+ Vrmpyweh,
Vrmpywoh,
Vrmpyu,
Vrmpysu,
@@ -850,6 +845,8 @@ pub enum Opcode {
AddClb,
AddAdd,
AddSub,
+ Vacsh,
+ Vminub,
SfRecipa,
SfInvsqrta,
Any8VcmpbEq,
@@ -6102,15 +6099,13 @@ fn decode_instruction<
handler.on_source_decoded(Operand::gprpair(sssss)?)?;
match opc {
- o if o & 0b100011 == 0b100001 => {
+ o if o & 0b100011 == 0b000001 => {
handler.on_opcode_decoded(Opcode::Vradduh)?;
- rtt_star = true;
saturate = false;
shift_amt = 0;
}
o if o & 0b101111 == 0b001111 => {
handler.on_opcode_decoded(Opcode::Vraddh)?;
- rtt_star = true;
saturate = false;
shift_amt = 0;
}
@@ -6162,7 +6157,6 @@ fn decode_instruction<
if o & 0b100000 == 0 {
shift_amt = 0;
}
- rtt_star = true;
}
_other => {
return Err(DecodeError::InvalidOpcode);
@@ -6176,7 +6170,7 @@ fn decode_instruction<
handler.shift_left(shift_amt)?;
}
if rtt_star {
- handler.on_source_decoded(Operand::gpr_conjugate(ttttt))?;
+ handler.on_source_decoded(Operand::gprpair_conjugate(ttttt)?)?;
} else {
handler.on_source_decoded(Operand::gprpair(ttttt)?)?;
}
@@ -6190,6 +6184,7 @@ fn decode_instruction<
handler.on_dest_decoded(Operand::gprpair(ddddd)?)?;
handler.on_source_decoded(Operand::gprpair(sssss)?)?;
let mut rtt_star = false;
+ let mut add_assign = true;
match opc {
0b000010 => {
@@ -6207,6 +6202,7 @@ fn decode_instruction<
}
0b001100 => {
handler.on_opcode_decoded(Opcode::Vcmpyr)?;
+ handler.saturate()?;
}
0b010001 => {
handler.on_opcode_decoded(Opcode::Vraddub)?;
@@ -6242,7 +6238,7 @@ fn decode_instruction<
handler.on_opcode_decoded(Opcode::Vrcmpys)?;
handler.shift_left(1)?;
handler.saturate()?;
- handler.rounded(RoundingMode::Hi)?;
+ handler.raw_mode(RawMode::Hi)?;
}
0b110001 => {
handler.on_opcode_decoded(Opcode::Vrmpybsu)?;
@@ -6254,12 +6250,13 @@ fn decode_instruction<
o if o & 0b111100 == 0b111000 => {
handler.on_opcode_decoded(Opcode::Vminub)?;
handler.on_dest_decoded(Operand::pred(o & 0b11))?;
+ add_assign = false;
}
0b111100 => {
handler.on_opcode_decoded(Opcode::Vrcmpys)?;
handler.shift_left(1)?;
handler.saturate()?;
- handler.rounded(RoundingMode::Lo)?;
+ handler.raw_mode(RawMode::Lo)?;
}
0b000_100 | 0b100_100 => {
handler.on_opcode_decoded(Opcode::Vdmpy)?;
@@ -6288,7 +6285,7 @@ fn decode_instruction<
handler.shift_left((opc >> 5) as u8)?;
}
0b001_110 | 0b101_110 => {
- handler.on_opcode_decoded(Opcode::Vrmpywoh)?;
+ handler.on_opcode_decoded(Opcode::Vrmpyweh)?;
handler.shift_left((opc >> 5) as u8)?;
}
0b001_111 | 0b101_111 => {
@@ -6297,6 +6294,16 @@ fn decode_instruction<
handler.rounded(RoundingMode::Round)?;
handler.shift_left((opc >> 5) as u8)?;
}
+ 0b010_101 | 0b110_101 => {
+ handler.on_opcode_decoded(Opcode::Vmpyweuh)?;
+ handler.saturate()?;
+ handler.shift_left((opc >> 5) as u8)?;
+ }
+ 0b010_111 | 0b110_111 => {
+ handler.on_opcode_decoded(Opcode::Vmpywouh)?;
+ handler.saturate()?;
+ handler.shift_left((opc >> 5) as u8)?;
+ }
0b011_101 | 0b111_101 => {
handler.on_opcode_decoded(Opcode::Vmpyweuh)?;
handler.saturate()?;
@@ -6308,7 +6315,7 @@ fn decode_instruction<
handler.shift_left((opc >> 5) as u8)?;
}
0b011_111 | 0b111_111 => {
- handler.on_opcode_decoded(Opcode::Vmpywoh)?;
+ handler.on_opcode_decoded(Opcode::Vmpywouh)?;
handler.saturate()?;
handler.rounded(RoundingMode::Round)?;
handler.shift_left((opc >> 5) as u8)?;
@@ -6319,10 +6326,13 @@ fn decode_instruction<
}
if rtt_star {
- handler.on_source_decoded(Operand::gpr_conjugate(ttttt))?;
+ handler.on_source_decoded(Operand::gprpair_conjugate(ttttt)?)?;
} else {
handler.on_source_decoded(Operand::gprpair(ttttt)?)?;
}
+ if add_assign {
+ handler.assign_mode(AssignMode::AddAssign)?;
+ }
}
0b1011 => {
// 1110|1011
diff --git a/tests/from_brain.rs b/tests/from_brain.rs
index 3f26ad6..047db47 100644
--- a/tests/from_brain.rs
+++ b/tests/from_brain.rs
@@ -1578,6 +1578,85 @@ fn inst_1110() {
test_display(&0b1110_1000_011_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 = vmpyweuh(R21:20, R7:6):rnd:sat }");
test_display(&0b1110_1000_011_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 = vmpywouh(R21:20, R7:6):rnd:sat }");
+ test_display(&0b1110_1000_100_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 = vdmpy(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_100_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 = vmpyweh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_100_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 = vmpyeh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_100_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 = vmpywoh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_101_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 = vrmpywoh(R21:20, R7:6):<<1 }");
+ test_display(&0b1110_1000_101_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 = vmpyweh(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1000_101_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 = vcmpyr(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_101_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 = vmpywoh(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1000_110_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 = vrmpywoh(R21:20, R7:6):<<1 }");
+ test_display(&0b1110_1000_110_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 = vmpyweuh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_110_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 = vcmpyi(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_110_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 = vmpywouh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1000_111_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 = vmpyweuh(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1000_111_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 = vmpywouh(R21:20, R7:6):<<1:rnd:sat }");
+
+ test_display(&0b1110_1001_000_10100_11_000110_001_10110u32.to_le_bytes(), "{ R22 = vradduh(R21:20, R7:6) }");
+ test_display(&0b1110_1001_001_10100_11_000110_111_10110u32.to_le_bytes(), "{ R22 = vraddh(R21:20, R7:6) }");
+ test_display(&0b1110_1001_000_10100_11_000110_100_10110u32.to_le_bytes(), "{ R22 = cmpyiw(R21:20, R7:6*):<<1:sat }");
+ test_display(&0b1110_1001_001_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = cmpyiw(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1001_010_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = cmpyrw(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1001_011_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = cmpyrw(R21:20, R7:6*):<<1:sat }");
+ test_display(&0b1110_1001_101_10100_11_000110_110_10110u32.to_le_bytes(), "{ R22 = vrcmpys(R21:20, R7:6):<<1:rnd:sat:raw:hi }");
+ test_display(&0b1110_1001_101_10100_11_000110_111_10110u32.to_le_bytes(), "{ R22 = vrcmpys(R21:20, R7:6):<<1:rnd:sat:raw:lo }");
+ test_display(&0b1110_1001_100_10100_11_000110_100_10110u32.to_le_bytes(), "{ R22 = cmpyiw(R21:20, R7:6*):<<1:rnd:sat }");
+ test_display(&0b1110_1001_101_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = cmpyiw(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1001_110_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = cmpyrw(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1001_111_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = cmpyrw(R21:20, R7:6*):<<1:rnd:sat }");
+
+ test_display(&0b1110_1001_000_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = vdmpy(R21:20, R7:6):rnd:sat }");
+ test_display(&0b1110_1001_100_10100_11_000110_000_10110u32.to_le_bytes(), "{ R22 = vdmpy(R21:20, R7:6):<<1:rnd:sat }");
+
+ test_display(&0b1110_1010_000_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 += vrmpyh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_000_10100_11_000110_011_10110u32.to_le_bytes(), "{ R23:22 += dfmpylh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_001_10100_11_000110_001_10110u32.to_le_bytes(), "{ R23:22 += vdmpybsu(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_001_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 += vmpyeh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_001_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 += vcmpyr(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_010_10100_11_000110_001_10110u32.to_le_bytes(), "{ R23:22 += vraddub(R21:20, R7:6) }");
+ test_display(&0b1110_1010_010_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 += vrsadub(R21:20, R7:6) }");
+ test_display(&0b1110_1010_010_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 += vcmpyi(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_010_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += cmpyiw(R21:20, R7:6*) }");
+ test_display(&0b1110_1010_011_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 += cmpyiw(R21:20, R7:6) }");
+
+ test_display(&0b1110_1010_100_10100_11_000110_001_10110u32.to_le_bytes(), "{ R23:22 += vrmpybu(R21:20, R7:6) }");
+ test_display(&0b1110_1010_100_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 += cmpyrw(R21:20, R7:6) }");
+ test_display(&0b1110_1010_100_10100_11_000110_011_10110u32.to_le_bytes(), "{ R23:22 += dfmpyhh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_101_10100_11_000110_001_10110u32.to_le_bytes(), "{ R23:22, P1 = vacsh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_101_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 += vrcmpys(R21:20, R7:6):<<1:sat:raw:hi }");
+
+ test_display(&0b1110_1010_110_10100_11_000110_001_10110u32.to_le_bytes(), "{ R23:22 += vrmpybsu(R21:20, R7:6) }");
+ test_display(&0b1110_1010_110_10100_11_000110_010_10110u32.to_le_bytes(), "{ R23:22 += cmpyrw(R21:20, R7:6*) }");
+ test_display(&0b1110_1010_111_10100_11_000110_001_10110u32.to_le_bytes(), "{ R23:22, P1 = vminub(R21:20, R7:6) }");
+ test_display(&0b1110_1010_111_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 += vrcmpys(R21:20, R7:6):<<1:sat:raw:lo }");
+
+ test_display(&0b1110_1010_000_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 += vdmpy(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_000_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweh(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_000_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += vmpyeh(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_000_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywoh(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_001_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweh(R21:20, R7:6):rnd:sat }");
+ test_display(&0b1110_1010_001_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += vrmpyweh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_001_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywoh(R21:20, R7:6):rnd:sat }");
+ test_display(&0b1110_1010_010_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweuh(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_010_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywouh(R21:20, R7:6):sat }");
+ test_display(&0b1110_1010_011_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweuh(R21:20, R7:6):rnd:sat }");
+ test_display(&0b1110_1010_011_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += vrmpywoh(R21:20, R7:6) }");
+ test_display(&0b1110_1010_011_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywouh(R21:20, R7:6):rnd:sat }");
+
+ test_display(&0b1110_1010_100_10100_11_000110_100_10110u32.to_le_bytes(), "{ R23:22 += vdmpy(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1010_100_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1010_100_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += vmpyeh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1010_100_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywoh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1010_101_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweh(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1010_101_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += vrmpyweh(R21:20, R7:6):<<1 }");
+ test_display(&0b1110_1010_101_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywoh(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1010_110_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweuh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1010_110_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywouh(R21:20, R7:6):<<1:sat }");
+ test_display(&0b1110_1010_111_10100_11_000110_101_10110u32.to_le_bytes(), "{ R23:22 += vmpyweuh(R21:20, R7:6):<<1:rnd:sat }");
+ test_display(&0b1110_1010_111_10100_11_000110_110_10110u32.to_le_bytes(), "{ R23:22 += vrmpywoh(R21:20, R7:6):<<1 }");
+ test_display(&0b1110_1010_111_10100_11_000110_111_10110u32.to_le_bytes(), "{ R23:22 += vmpywouh(R21:20, R7:6):<<1:rnd:sat }");
+
test_invalid(&0b1110_1011_000_10100_11_000110_000_10110u32.to_le_bytes(), DecodeError::InvalidOpcode);
test_display(&0b1110_1011_000_10100_11_000110_001_10110u32.to_le_bytes(), "{ R22 = sfsub(R20, R6) }");
test_display(&0b1110_1011_000_10100_11_000110_011_10110u32.to_le_bytes(), "{ R22 = sfadd(R20, R6) }");