]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
VSX Mask Manipulation operation tests.
authorCarl Love <cel@us.ibm.com>
Tue, 17 Nov 2020 01:53:22 +0000 (19:53 -0600)
committerCarl Love <cel@us.ibm.com>
Thu, 4 Mar 2021 18:57:16 +0000 (12:57 -0600)
NEWS
none/tests/ppc64/test_isa_3_1_RT.c
none/tests/ppc64/test_isa_3_1_RT.stdout.exp
none/tests/ppc64/test_isa_3_1_VRT.c
none/tests/ppc64/test_isa_3_1_VRT.stdout.exp

diff --git a/NEWS b/NEWS
index 6cb270c1c40e3ddab9c7a6006af01e064ba85ad2..c8fe48f709f4f4e4d9e3ff2994ffd436ef74efad 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -35,6 +35,16 @@ support for X86/macOS 10.13, AMD64/macOS 10.13 and nanoMIPS/Linux.
     Valgrind.  The vector-packed-decimal facility is currently not
     exploited by the standard toolchain and libraries.
 
+* ppc64:
+
+  - Various bug fixes.  Fix for the sync field to limit setting just two
+    of the two bits in the L-field. Fix the write size for the stxsibx and
+    stxsihx instructions.  Fix the modsw and modsd instructions.
+
+  - Partial support for ISA 3.1 has been added.  Support for the VSX PCV
+    mask instructions, bfloat16 GER instructions, and bfloat16 to/from float
+    32-bit conversion instructions are still missing.
+
 * Valgrind now supports debuginfod, an HTTP server for distributing
   ELF/DWARF debugging information. When a debuginfo file cannot be
   found locally, Valgrind is able to query debuginfod servers for the
@@ -134,6 +144,7 @@ where XXXXXX is the bug number as listed below.
 428716  cppcheck detects potential leak in VEX/useful/smchash.c
 428909  helgrind: need to intercept duplicate libc definitions for Fedora 33
 429352  PPC ISA 3.1 support is missing, part 7
+429354  PPC ISA 3.1 support is missing, part 8
 429692  unhandled ppc64le-linux syscall: 147 (getsid)
 429864  s390x: C++ atomic test_and_set yields false-positive memcheck
         diagnostics
index ce70c7ac0ffcf7461d164e424d410d5765235378..9e2e352f897fe08806eb09fc3efd04c7047ab0a0 100644 (file)
@@ -689,6 +689,45 @@ static void test_pstq_off32 (void) {
 static void test_pstq_off64 (void) {
   __asm__ __volatile__ ("pstq 24, 64(%0), 0" :: "r" (ra) );
 }
+static void test_vcntmbb_0 (void) {
+  __asm__ __volatile__ ("vcntmbb %0, %1, 0" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbb_1 (void) {
+  __asm__ __volatile__ ("vcntmbb %0, %1, 1" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbh_0 (void) {
+  __asm__ __volatile__ ("vcntmbh %0, %1, 0" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbh_1 (void) {
+  __asm__ __volatile__ ("vcntmbh %0, %1, 1" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbw_0 (void) {
+  __asm__ __volatile__ ("vcntmbw %0, %1, 0" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbw_1 (void) {
+  __asm__ __volatile__ ("vcntmbw %0, %1, 1" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbd_0 (void) {
+  __asm__ __volatile__ ("vcntmbd %0, %1, 0" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vcntmbd_1 (void) {
+  __asm__ __volatile__ ("vcntmbd %0, %1, 1" : "=r" (rt) : "v" (vrb) );
+}
+static void test_vextractbm (void) {
+  __asm__ __volatile__ ("vextractbm %0, %1 " : "=r" (rt) : "v" (vrb) );
+}
+static void test_vextracthm (void) {
+  __asm__ __volatile__ ("vextracthm %0, %1 " : "=r" (rt) : "v" (vrb) );
+}
+static void test_vextractwm (void) {
+  __asm__ __volatile__ ("vextractwm %0, %1 " : "=r" (rt) : "v" (vrb) );
+}
+static void test_vextractdm (void) {
+  __asm__ __volatile__ ("vextractdm %0, %1 " : "=r" (rt) : "v" (vrb) );
+}
+static void test_vextractqm (void) {
+  __asm__ __volatile__ ("vextractqm %0, %1 " : "=r" (rt) : "v" (vrb) );
+}
 
 static test_list_t testgroup_generic[] = {
   { &test_brd, "brd", "RA,RS"}, /* bcs */
@@ -845,6 +884,19 @@ static test_list_t testgroup_generic[] = {
   { &test_setnbc_31_cr1s, "setnbc 31_cr1s", "RT,BI"}, /* bcwp */
   { &test_setnbc_31_creb, "setnbc 31_creb", "RT,BI"}, /* bcwp */
   { &test_setnbc_31_crob, "setnbc 31_crob", "RT,BI"}, /* bcwp */
+  { &test_vcntmbb_0, "vcntmbb 0", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbb_1, "vcntmbb 1", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbd_0, "vcntmbd 0", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbd_1, "vcntmbd 1", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbh_0, "vcntmbh 0", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbh_1, "vcntmbh 1", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbw_0, "vcntmbw 0", "RT,VRB,MP"}, /* bcwp */
+  { &test_vcntmbw_1, "vcntmbw 1", "RT,VRB,MP"}, /* bcwp */
+  { &test_vextractbm, "vextractbm", "RT,VRB"}, /* bcs */
+  { &test_vextractdm, "vextractdm", "RT,VRB"}, /* bcs */
+  { &test_vextracthm, "vextracthm", "RT,VRB"}, /* bcs */
+  { &test_vextractqm, "vextractqm", "RT,VRB"}, /* bcs */
+  { &test_vextractwm, "vextractwm", "RT,VRB"}, /* bcs */
   { &test_vgnb_2, "vgnb 2", "RT,VRB,N"}, /* bcwp */
   { &test_vgnb_3, "vgnb 3", "RT,VRB,N"}, /* bcwp */
   { &test_vgnb_4, "vgnb 4", "RT,VRB,N"}, /* bcwp */
index 7cacb36440356de59425f9d8fd1ff86d8ae5dd2f..132ae31196fb5ddc1b8ccfd9b568b9be4fec1bef 100644 (file)
@@ -521,6 +521,188 @@ setnbc 31_creb => [aaaaaaaa]                0
 
 setnbc 31_crob => [55555555] ffffffffffffffff
 
+vcntmbb 0 7f800000ff800000,ff8000007f800000 =>  a00000000000000
+vcntmbb 0 ff8000007f800000,ff7ffffe7f7ffffe =>  800000000000000
+vcntmbb 0 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbb 0 0080000e8080000e,0180055e0180077e =>  b00000000000000
+vcntmbb 0 0180055e0180077e,0000111e8000222e =>  d00000000000000
+vcntmbb 0 0000111e8000222e,7ff0000000000000 =>  e00000000000000
+vcntmbb 0 7ff0000000000000,fff0000000000000 =>  d00000000000000
+vcntmbb 0 fff0000000000000,2208400000000000 =>  e00000000000000
+vcntmbb 0 2208400000000000,0000000000000009 => 1000000000000000
+vcntmbb 0 0000000000000009,ffff000180000001 =>  d00000000000000
+vcntmbb 0 ffff000180000001,0000000000000000 =>  d00000000000000
+vcntmbb 0 0000000000000000,8000000000000000 =>  f00000000000000
+vcntmbb 0 8000000000000000,7f800000ff800000 =>  c00000000000000
+
+vcntmbb 1 7f800000ff800000,ff8000007f800000 =>  600000000000000
+vcntmbb 1 ff8000007f800000,ff7ffffe7f7ffffe =>  800000000000000
+vcntmbb 1 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbb 1 0080000e8080000e,0180055e0180077e =>  500000000000000
+vcntmbb 1 0180055e0180077e,0000111e8000222e =>  300000000000000
+vcntmbb 1 0000111e8000222e,7ff0000000000000 =>  200000000000000
+vcntmbb 1 7ff0000000000000,fff0000000000000 =>  300000000000000
+vcntmbb 1 fff0000000000000,2208400000000000 =>  200000000000000
+vcntmbb 1 2208400000000000,0000000000000009 =>                0
+vcntmbb 1 0000000000000009,ffff000180000001 =>  300000000000000
+vcntmbb 1 ffff000180000001,0000000000000000 =>  300000000000000
+vcntmbb 1 0000000000000000,8000000000000000 =>  100000000000000
+vcntmbb 1 8000000000000000,7f800000ff800000 =>  400000000000000
+
+vcntmbd 0 7f800000ff800000,ff8000007f800000 =>  800000000000000
+vcntmbd 0 ff8000007f800000,ff7ffffe7f7ffffe =>                0
+vcntmbd 0 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbd 0 0080000e8080000e,0180055e0180077e => 1000000000000000
+vcntmbd 0 0180055e0180077e,0000111e8000222e => 1000000000000000
+vcntmbd 0 0000111e8000222e,7ff0000000000000 => 1000000000000000
+vcntmbd 0 7ff0000000000000,fff0000000000000 =>  800000000000000
+vcntmbd 0 fff0000000000000,2208400000000000 =>  800000000000000
+vcntmbd 0 2208400000000000,0000000000000009 => 1000000000000000
+vcntmbd 0 0000000000000009,ffff000180000001 =>  800000000000000
+vcntmbd 0 ffff000180000001,0000000000000000 =>  800000000000000
+vcntmbd 0 0000000000000000,8000000000000000 =>  800000000000000
+vcntmbd 0 8000000000000000,7f800000ff800000 =>  800000000000000
+
+vcntmbd 1 7f800000ff800000,ff8000007f800000 =>  800000000000000
+vcntmbd 1 ff8000007f800000,ff7ffffe7f7ffffe => 1000000000000000
+vcntmbd 1 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbd 1 0080000e8080000e,0180055e0180077e =>                0
+vcntmbd 1 0180055e0180077e,0000111e8000222e =>                0
+vcntmbd 1 0000111e8000222e,7ff0000000000000 =>                0
+vcntmbd 1 7ff0000000000000,fff0000000000000 =>  800000000000000
+vcntmbd 1 fff0000000000000,2208400000000000 =>  800000000000000
+vcntmbd 1 2208400000000000,0000000000000009 =>                0
+vcntmbd 1 0000000000000009,ffff000180000001 =>  800000000000000
+vcntmbd 1 ffff000180000001,0000000000000000 =>  800000000000000
+vcntmbd 1 0000000000000000,8000000000000000 =>  800000000000000
+vcntmbd 1 8000000000000000,7f800000ff800000 =>  800000000000000
+
+vcntmbh 0 7f800000ff800000,ff8000007f800000 =>  c00000000000000
+vcntmbh 0 ff8000007f800000,ff7ffffe7f7ffffe =>  800000000000000
+vcntmbh 0 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbh 0 0080000e8080000e,0180055e0180077e =>  e00000000000000
+vcntmbh 0 0180055e0180077e,0000111e8000222e =>  e00000000000000
+vcntmbh 0 0000111e8000222e,7ff0000000000000 =>  e00000000000000
+vcntmbh 0 7ff0000000000000,fff0000000000000 =>  e00000000000000
+vcntmbh 0 fff0000000000000,2208400000000000 =>  e00000000000000
+vcntmbh 0 2208400000000000,0000000000000009 => 1000000000000000
+vcntmbh 0 0000000000000009,ffff000180000001 =>  c00000000000000
+vcntmbh 0 ffff000180000001,0000000000000000 =>  c00000000000000
+vcntmbh 0 0000000000000000,8000000000000000 =>  e00000000000000
+vcntmbh 0 8000000000000000,7f800000ff800000 =>  c00000000000000
+
+vcntmbh 1 7f800000ff800000,ff8000007f800000 =>  400000000000000
+vcntmbh 1 ff8000007f800000,ff7ffffe7f7ffffe =>  800000000000000
+vcntmbh 1 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbh 1 0080000e8080000e,0180055e0180077e =>  200000000000000
+vcntmbh 1 0180055e0180077e,0000111e8000222e =>  200000000000000
+vcntmbh 1 0000111e8000222e,7ff0000000000000 =>  200000000000000
+vcntmbh 1 7ff0000000000000,fff0000000000000 =>  200000000000000
+vcntmbh 1 fff0000000000000,2208400000000000 =>  200000000000000
+vcntmbh 1 2208400000000000,0000000000000009 =>                0
+vcntmbh 1 0000000000000009,ffff000180000001 =>  400000000000000
+vcntmbh 1 ffff000180000001,0000000000000000 =>  400000000000000
+vcntmbh 1 0000000000000000,8000000000000000 =>  200000000000000
+vcntmbh 1 8000000000000000,7f800000ff800000 =>  400000000000000
+
+vcntmbw 0 7f800000ff800000,ff8000007f800000 =>  800000000000000
+vcntmbw 0 ff8000007f800000,ff7ffffe7f7ffffe =>  800000000000000
+vcntmbw 0 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbw 0 0080000e8080000e,0180055e0180077e =>  c00000000000000
+vcntmbw 0 0180055e0180077e,0000111e8000222e =>  c00000000000000
+vcntmbw 0 0000111e8000222e,7ff0000000000000 =>  c00000000000000
+vcntmbw 0 7ff0000000000000,fff0000000000000 =>  c00000000000000
+vcntmbw 0 fff0000000000000,2208400000000000 =>  c00000000000000
+vcntmbw 0 2208400000000000,0000000000000009 => 1000000000000000
+vcntmbw 0 0000000000000009,ffff000180000001 =>  800000000000000
+vcntmbw 0 ffff000180000001,0000000000000000 =>  800000000000000
+vcntmbw 0 0000000000000000,8000000000000000 =>  c00000000000000
+vcntmbw 0 8000000000000000,7f800000ff800000 =>  800000000000000
+
+vcntmbw 1 7f800000ff800000,ff8000007f800000 =>  800000000000000
+vcntmbw 1 ff8000007f800000,ff7ffffe7f7ffffe =>  800000000000000
+vcntmbw 1 ff7ffffe7f7ffffe,0080000e8080000e =>  800000000000000
+vcntmbw 1 0080000e8080000e,0180055e0180077e =>  400000000000000
+vcntmbw 1 0180055e0180077e,0000111e8000222e =>  400000000000000
+vcntmbw 1 0000111e8000222e,7ff0000000000000 =>  400000000000000
+vcntmbw 1 7ff0000000000000,fff0000000000000 =>  400000000000000
+vcntmbw 1 fff0000000000000,2208400000000000 =>  400000000000000
+vcntmbw 1 2208400000000000,0000000000000009 =>                0
+vcntmbw 1 0000000000000009,ffff000180000001 =>  800000000000000
+vcntmbw 1 ffff000180000001,0000000000000000 =>  800000000000000
+vcntmbw 1 0000000000000000,8000000000000000 =>  400000000000000
+vcntmbw 1 8000000000000000,7f800000ff800000 =>  800000000000000
+
+vextractbm 7f800000ff800000,ff8000007f800000 =>             c44c
+vextractbm ff8000007f800000,ff7ffffe7f7ffffe =>             b3c4
+vextractbm ff7ffffe7f7ffffe,0080000e8080000e =>             4cb3
+vextractbm 0080000e8080000e,0180055e0180077e =>             444c
+vextractbm 0180055e0180077e,0000111e8000222e =>              844
+vextractbm 0000111e8000222e,7ff0000000000000 =>             4008
+vextractbm 7ff0000000000000,fff0000000000000 =>             c040
+vextractbm fff0000000000000,2208400000000000 =>               c0
+vextractbm 2208400000000000,0000000000000009 =>                0
+vextractbm 0000000000000009,ffff000180000001 =>             c800
+vextractbm ffff000180000001,0000000000000000 =>               c8
+vextractbm 0000000000000000,8000000000000000 =>             8000
+vextractbm 8000000000000000,7f800000ff800000 =>             4c80
+
+vextractdm 7f800000ff800000,ff8000007f800000 =>                2
+vextractdm ff8000007f800000,ff7ffffe7f7ffffe =>                3
+vextractdm ff7ffffe7f7ffffe,0080000e8080000e =>                1
+vextractdm 0080000e8080000e,0180055e0180077e =>                0
+vextractdm 0180055e0180077e,0000111e8000222e =>                0
+vextractdm 0000111e8000222e,7ff0000000000000 =>                0
+vextractdm 7ff0000000000000,fff0000000000000 =>                2
+vextractdm fff0000000000000,2208400000000000 =>                1
+vextractdm 2208400000000000,0000000000000009 =>                0
+vextractdm 0000000000000009,ffff000180000001 =>                2
+vextractdm ffff000180000001,0000000000000000 =>                1
+vextractdm 0000000000000000,8000000000000000 =>                2
+vextractdm 8000000000000000,7f800000ff800000 =>                1
+
+vextracthm 7f800000ff800000,ff8000007f800000 =>               82
+vextracthm ff8000007f800000,ff7ffffe7f7ffffe =>               d8
+vextracthm ff7ffffe7f7ffffe,0080000e8080000e =>               2d
+vextracthm 0080000e8080000e,0180055e0180077e =>                2
+vextracthm 0180055e0180077e,0000111e8000222e =>               20
+vextracthm 0000111e8000222e,7ff0000000000000 =>                2
+vextracthm 7ff0000000000000,fff0000000000000 =>               80
+vextracthm fff0000000000000,2208400000000000 =>                8
+vextracthm 2208400000000000,0000000000000009 =>                0
+vextracthm 0000000000000009,ffff000180000001 =>               a0
+vextracthm ffff000180000001,0000000000000000 =>                a
+vextracthm 0000000000000000,8000000000000000 =>               80
+vextracthm 8000000000000000,7f800000ff800000 =>               28
+
+vextractqm 7f800000ff800000,ff8000007f800000 =>                1
+vextractqm ff8000007f800000,ff7ffffe7f7ffffe =>                1
+vextractqm ff7ffffe7f7ffffe,0080000e8080000e =>                0
+vextractqm 0080000e8080000e,0180055e0180077e =>                0
+vextractqm 0180055e0180077e,0000111e8000222e =>                0
+vextractqm 0000111e8000222e,7ff0000000000000 =>                0
+vextractqm 7ff0000000000000,fff0000000000000 =>                1
+vextractqm fff0000000000000,2208400000000000 =>                0
+vextractqm 2208400000000000,0000000000000009 =>                0
+vextractqm 0000000000000009,ffff000180000001 =>                1
+vextractqm ffff000180000001,0000000000000000 =>                0
+vextractqm 0000000000000000,8000000000000000 =>                1
+vextractqm 8000000000000000,7f800000ff800000 =>                0
+
+vextractwm 7f800000ff800000,ff8000007f800000 =>                9
+vextractwm ff8000007f800000,ff7ffffe7f7ffffe =>                a
+vextractwm ff7ffffe7f7ffffe,0080000e8080000e =>                6
+vextractwm 0080000e8080000e,0180055e0180077e =>                1
+vextractwm 0180055e0180077e,0000111e8000222e =>                4
+vextractwm 0000111e8000222e,7ff0000000000000 =>                1
+vextractwm 7ff0000000000000,fff0000000000000 =>                8
+vextractwm fff0000000000000,2208400000000000 =>                2
+vextractwm 2208400000000000,0000000000000009 =>                0
+vextractwm 0000000000000009,ffff000180000001 =>                c
+vextractwm ffff000180000001,0000000000000000 =>                3
+vextractwm 0000000000000000,8000000000000000 =>                8
+vextractwm 8000000000000000,7f800000ff800000 =>                6
+
 vgnb 2 7f800000ff800000,ff8000007f800000 => f80078007800f800
 vgnb 2 ff8000007f800000,ff7ffffe7f7ffffe => f7ff77fff8007800
 vgnb 2 ff7ffffe7f7ffffe,0080000e8080000e =>  8038803f7ff77ff
@@ -605,4 +787,4 @@ vgnb 7 ffff000180000001,0000000000000000 =>   30000000000000
 vgnb 7 0000000000000000,8000000000000000 => 8000000000000000
 vgnb 7 8000000000000000,7f800000ff800000 => 4400000000000000
 
-All done. Tested 160 different instruction groups
+All done. Tested 173 different instruction groups
index f5f5536d8e2b23cfc72bc56a9736aed8a10e99f4..fb5d3d10f13608b39575911ecbacd93695b6dadc 100644 (file)
@@ -435,6 +435,45 @@ static void test_xsmincqp (void) {
   __asm__ __volatile__ ("xsmincqp %0, %1, %2"
                                : "=v" (vrt) : "v" (vra), "v" (vrb) );
 }
+static void test_mtvsrbm (void) {
+  __asm__ __volatile__ ("mtvsrbm %0, %1" : "=v" (vrt) : "r" (rb) );
+}
+static void test_mtvsrhm (void) {
+  __asm__ __volatile__ ("mtvsrhm %0, %1" : "=v" (vrt) : "r" (rb) );
+}
+static void test_mtvsrwm (void) {
+  __asm__ __volatile__ ("mtvsrwm %0, %1" : "=v" (vrt) : "r" (rb) );
+}
+static void test_mtvsrdm (void) {
+  __asm__ __volatile__ ("mtvsrdm %0, %1" : "=v" (vrt) : "r" (rb) );
+}
+static void test_mtvsrqm (void) {
+  __asm__ __volatile__ ("mtvsrqm %0, %1" : "=v" (vrt) : "r" (rb) );
+}
+static void test_mtvsrbmi_0 (void) {
+  __asm__ __volatile__ ("mtvsrbmi %0, 0" : "=v" (vrt) );
+}
+static void test_mtvsrbmi_3 (void) {
+  __asm__ __volatile__ ("mtvsrbmi %0, 3" : "=v" (vrt) );
+}
+static void test_mtvsrbmi_7 (void) {
+  __asm__ __volatile__ ("mtvsrbmi %0, 7" : "=v" (vrt) );
+}
+static void test_vexpandbm (void) {
+  __asm__ __volatile__ ("vexpandbm %0, %1 " : "=v" (vrt) : "v" (vrb) );
+}
+static void test_vexpandhm (void) {
+  __asm__ __volatile__ ("vexpandhm %0, %1 " : "=v" (vrt) : "v" (vrb) );
+}
+static void test_vexpandwm (void) {
+  __asm__ __volatile__ ("vexpandwm %0, %1 " : "=v" (vrt) : "v" (vrb) );
+}
+static void test_vexpanddm (void) {
+  __asm__ __volatile__ ("vexpanddm %0, %1 " : "=v" (vrt) : "v" (vrb) );
+}
+static void test_vexpandqm (void) {
+  __asm__ __volatile__ ("vexpandqm %0, %1 " : "=v" (vrt) : "v" (vrb) );
+}
 
 static test_list_t testgroup_generic[] = {
   { &test_dcffixqq, "dcffixqq", "FRTp,VRB"}, /* bcs */
@@ -446,6 +485,14 @@ static test_list_t testgroup_generic[] = {
   { &test_dotted_vstribr, "vstribr.", "VRT,VRB"}, /* bcs */
   { &test_dotted_vstrihl, "vstrihl.", "VRT,VRB"}, /* bcs */
   { &test_dotted_vstrihr, "vstrihr.", "VRT,VRB"}, /* bcs */
+  { &test_mtvsrbmi_0, "mtvsrbmi 0", "VRT,bm"}, /* bcwp */
+  { &test_mtvsrbmi_3, "mtvsrbmi 3", "VRT,bm"}, /* bcwp */
+  { &test_mtvsrbmi_7, "mtvsrbmi 7", "VRT,bm"}, /* bcwp */
+  { &test_mtvsrbm, "mtvsrbm", "VRT,RB"}, /* bcs */
+  { &test_mtvsrdm, "mtvsrdm", "VRT,RB"}, /* bcs */
+  { &test_mtvsrhm, "mtvsrhm", "VRT,RB"}, /* bcs */
+  { &test_mtvsrqm, "mtvsrqm", "VRT,RB"}, /* bcs */
+  { &test_mtvsrwm, "mtvsrwm", "VRT,RB"}, /* bcs */
   { &test_vcfuged, "vcfuged", "VRT,VRA,VRB"}, /* bcs */
   { &test_vclrlb, "vclrlb", "VRT,VRA,RB"}, /* bcs */
   { &test_vclrrb, "vclrrb", "VRT,VRA,RB"}, /* bcs */
@@ -466,6 +513,11 @@ static test_list_t testgroup_generic[] = {
   { &test_vdivud, "vdivud", "VRT,VRA,VRB"}, /* bcs */
   { &test_vdivuq, "vdivuq", "VRT,VRA,VRB"}, /* bcs */
   { &test_vdivuw, "vdivuw", "VRT,VRA,VRB"}, /* bcs */
+  { &test_vexpandbm, "vexpandbm", "VRT,VRB"}, /* bcs */
+  { &test_vexpanddm, "vexpanddm", "VRT,VRB"}, /* bcs */
+  { &test_vexpandhm, "vexpandhm", "VRT,VRB"}, /* bcs */
+  { &test_vexpandqm, "vexpandqm", "VRT,VRB"}, /* bcs */
+  { &test_vexpandwm, "vexpandwm", "VRT,VRB"}, /* bcs */
   { &test_vextddvlx, "vextddvlx", "VRT,VRA,VRB,RC"}, /* bcs */
   { &test_vextddvrx, "vextddvrx", "VRT,VRA,VRB,RC"}, /* bcs */
   { &test_vextdubvlx, "vextdubvlx", "VRT,VRA,VRB,RC"}, /* bcs */
index 70e8feeb1fcd13b7b9c2dcbfdff5dff6d79ac6f6..39c4d86197a72b2b62f7e1dc7f98dc2669744a1d 100644 (file)
@@ -586,6 +586,42 @@ vstrihr. ffff000180000001,0000000000000000 => [00000020]6:[0010]
 vstrihr. 0000000000000000,8000000000000000 => [00000020]6:[0010]                0,0000000000000000
 vstrihr. 8000000000000000,7f800000ff800000 => [00000020]6:[0010]                0,0000000000000000
 
+mtvsrbmi 0 =>                0,0000000000000000
+
+mtvsrbmi 3 =>                0,000000000000ffff
+
+mtvsrbmi 7 =>                0,0000000000ffffff
+
+mtvsrbm 0 =>                0,0000000000000000
+mtvsrbm ffffffff => ffffffffffffffff,ffffffffffffffff
+mtvsrbm ffffffff55555555 =>   ff00ff00ff00ff,00ff00ff00ff00ff
+mtvsrbm 5555aaaaaaaa5555 =>   ff00ff00ff00ff,00ff00ff00ff00ff
+mtvsrbm aaaa00000000aaaa => ff00ff00ff00ff00,ff00ff00ff00ff00
+
+mtvsrdm 0 =>                0,0000000000000000
+mtvsrdm ffffffff => ffffffffffffffff,ffffffffffffffff
+mtvsrdm ffffffff55555555 =>                0,ffffffffffffffff
+mtvsrdm 5555aaaaaaaa5555 =>                0,ffffffffffffffff
+mtvsrdm aaaa00000000aaaa => ffffffffffffffff,0000000000000000
+
+mtvsrhm 0 =>                0,0000000000000000
+mtvsrhm ffffffff => ffffffffffffffff,ffffffffffffffff
+mtvsrhm ffffffff55555555 =>     ffff0000ffff,0000ffff0000ffff
+mtvsrhm 5555aaaaaaaa5555 =>     ffff0000ffff,0000ffff0000ffff
+mtvsrhm aaaa00000000aaaa => ffff0000ffff0000,ffff0000ffff0000
+
+mtvsrqm 0 =>                0,0000000000000000
+mtvsrqm ffffffff => ffffffffffffffff,ffffffffffffffff
+mtvsrqm ffffffff55555555 => ffffffffffffffff,ffffffffffffffff
+mtvsrqm 5555aaaaaaaa5555 => ffffffffffffffff,ffffffffffffffff
+mtvsrqm aaaa00000000aaaa =>                0,0000000000000000
+
+mtvsrwm 0 =>                0,0000000000000000
+mtvsrwm ffffffff => ffffffffffffffff,ffffffffffffffff
+mtvsrwm ffffffff55555555 =>         ffffffff,00000000ffffffff
+mtvsrwm 5555aaaaaaaa5555 =>         ffffffff,00000000ffffffff
+mtvsrwm aaaa00000000aaaa => ffffffff00000000,ffffffff00000000
+
 vcfuged 7f800000ff800000,ff8000007f800000 7f800000ff800000,ff8000007f800000 =>            1ffff,000000000001ffff
 vcfuged 7f800000ff800000,ff8000007f800000 ff8000007f800000,ff7ffffe7f7ffffe => 97f800001fc00000,000001000000ffff
 vcfuged 7f800000ff800000,ff8000007f800000 ff7ffffe7f7ffffe,0080000e8080000e => ff00000fe0000108,b3f800001fc00000
@@ -2508,6 +2544,76 @@ vdivuw 7f800000ff800000,ff8000007f800000 ff7ffffe7f7ffffe,0080000e8080000e =>
 vdivuw 7f800000ff800000,ff8000007f800000 0080000e8080000e,0180055e0180077e =>       aa00000054,000000fe00000001
 vdivuw 7f800000ff800000,ff8000007f800000 0180055e0180077e,0000111e8000222e =>    eed3000000000,00000054000000aa
 
+vexpandbm 7f800000ff800000,ff8000007f800000 => ffff000000ff0000,00ff0000ffff0000
+vexpandbm ff8000007f800000,ff7ffffe7f7ffffe => ff00ffff0000ffff,ffff000000ff0000
+vexpandbm ff7ffffe7f7ffffe,0080000e8080000e =>   ff0000ffff0000,ff00ffff0000ffff
+vexpandbm 0080000e8080000e,0180055e0180077e =>   ff000000ff0000,00ff0000ffff0000
+vexpandbm 0180055e0180077e,0000111e8000222e =>         ff000000,00ff000000ff0000
+vexpandbm 0000111e8000222e,7ff0000000000000 =>   ff000000000000,00000000ff000000
+vexpandbm 7ff0000000000000,fff0000000000000 => ffff000000000000,00ff000000000000
+vexpandbm fff0000000000000,2208400000000000 =>                0,ffff000000000000
+vexpandbm 2208400000000000,0000000000000009 =>                0,0000000000000000
+vexpandbm 0000000000000009,ffff000180000001 => ffff0000ff000000,0000000000000000
+vexpandbm ffff000180000001,0000000000000000 =>                0,ffff0000ff000000
+vexpandbm 0000000000000000,8000000000000000 => ff00000000000000,0000000000000000
+vexpandbm 8000000000000000,7f800000ff800000 =>   ff0000ffff0000,ff00000000000000
+
+vexpanddm 7f800000ff800000,ff8000007f800000 => ffffffffffffffff,0000000000000000
+vexpanddm ff8000007f800000,ff7ffffe7f7ffffe => ffffffffffffffff,ffffffffffffffff
+vexpanddm ff7ffffe7f7ffffe,0080000e8080000e =>                0,ffffffffffffffff
+vexpanddm 0080000e8080000e,0180055e0180077e =>                0,0000000000000000
+vexpanddm 0180055e0180077e,0000111e8000222e =>                0,0000000000000000
+vexpanddm 0000111e8000222e,7ff0000000000000 =>                0,0000000000000000
+vexpanddm 7ff0000000000000,fff0000000000000 => ffffffffffffffff,0000000000000000
+vexpanddm fff0000000000000,2208400000000000 =>                0,ffffffffffffffff
+vexpanddm 2208400000000000,0000000000000009 =>                0,0000000000000000
+vexpanddm 0000000000000009,ffff000180000001 => ffffffffffffffff,0000000000000000
+vexpanddm ffff000180000001,0000000000000000 =>                0,ffffffffffffffff
+vexpanddm 0000000000000000,8000000000000000 => ffffffffffffffff,0000000000000000
+vexpanddm 8000000000000000,7f800000ff800000 =>                0,ffffffffffffffff
+
+vexpandhm 7f800000ff800000,ff8000007f800000 => ffff000000000000,00000000ffff0000
+vexpandhm ff8000007f800000,ff7ffffe7f7ffffe => ffffffff0000ffff,ffff000000000000
+vexpandhm ff7ffffe7f7ffffe,0080000e8080000e =>         ffff0000,ffffffff0000ffff
+vexpandhm 0080000e8080000e,0180055e0180077e =>                0,00000000ffff0000
+vexpandhm 0180055e0180077e,0000111e8000222e =>         ffff0000,0000000000000000
+vexpandhm 0000111e8000222e,7ff0000000000000 =>                0,00000000ffff0000
+vexpandhm 7ff0000000000000,fff0000000000000 => ffff000000000000,0000000000000000
+vexpandhm fff0000000000000,2208400000000000 =>                0,ffff000000000000
+vexpandhm 2208400000000000,0000000000000009 =>                0,0000000000000000
+vexpandhm 0000000000000009,ffff000180000001 => ffff0000ffff0000,0000000000000000
+vexpandhm ffff000180000001,0000000000000000 =>                0,ffff0000ffff0000
+vexpandhm 0000000000000000,8000000000000000 => ffff000000000000,0000000000000000
+vexpandhm 8000000000000000,7f800000ff800000 =>         ffff0000,ffff000000000000
+
+vexpandqm 7f800000ff800000,ff8000007f800000 => ffffffffffffffff,ffffffffffffffff
+vexpandqm ff8000007f800000,ff7ffffe7f7ffffe => ffffffffffffffff,ffffffffffffffff
+vexpandqm ff7ffffe7f7ffffe,0080000e8080000e =>                0,0000000000000000
+vexpandqm 0080000e8080000e,0180055e0180077e =>                0,0000000000000000
+vexpandqm 0180055e0180077e,0000111e8000222e =>                0,0000000000000000
+vexpandqm 0000111e8000222e,7ff0000000000000 =>                0,0000000000000000
+vexpandqm 7ff0000000000000,fff0000000000000 => ffffffffffffffff,ffffffffffffffff
+vexpandqm fff0000000000000,2208400000000000 =>                0,0000000000000000
+vexpandqm 2208400000000000,0000000000000009 =>                0,0000000000000000
+vexpandqm 0000000000000009,ffff000180000001 => ffffffffffffffff,ffffffffffffffff
+vexpandqm ffff000180000001,0000000000000000 =>                0,0000000000000000
+vexpandqm 0000000000000000,8000000000000000 => ffffffffffffffff,ffffffffffffffff
+vexpandqm 8000000000000000,7f800000ff800000 =>                0,0000000000000000
+
+vexpandwm 7f800000ff800000,ff8000007f800000 => ffffffff00000000,00000000ffffffff
+vexpandwm ff8000007f800000,ff7ffffe7f7ffffe => ffffffff00000000,ffffffff00000000
+vexpandwm ff7ffffe7f7ffffe,0080000e8080000e =>         ffffffff,ffffffff00000000
+vexpandwm 0080000e8080000e,0180055e0180077e =>                0,00000000ffffffff
+vexpandwm 0180055e0180077e,0000111e8000222e =>         ffffffff,0000000000000000
+vexpandwm 0000111e8000222e,7ff0000000000000 =>                0,00000000ffffffff
+vexpandwm 7ff0000000000000,fff0000000000000 => ffffffff00000000,0000000000000000
+vexpandwm fff0000000000000,2208400000000000 =>                0,ffffffff00000000
+vexpandwm 2208400000000000,0000000000000009 =>                0,0000000000000000
+vexpandwm 0000000000000009,ffff000180000001 => ffffffffffffffff,0000000000000000
+vexpandwm ffff000180000001,0000000000000000 =>                0,ffffffffffffffff
+vexpandwm 0000000000000000,8000000000000000 => ffffffff00000000,0000000000000000
+vexpandwm 8000000000000000,7f800000ff800000 =>         ffffffff,ffffffff00000000
+
 vextddvlx 0 7f800000ff800000,ff8000007f800000 7f800000ff800000,ff8000007f800000 => ff8000007f800000,0000000000000000
 vextddvlx 4 7f800000ff800000,ff8000007f800000 7f800000ff800000,ff8000007f800000 => 7f8000007f800000,0000000000000000
 vextddvlx 8 7f800000ff800000,ff8000007f800000 7f800000ff800000,ff8000007f800000 => 7f800000ff800000,0000000000000000
@@ -12013,4 +12119,4 @@ xsmincqp 8000000000000000,7f800000ff800000 ffff000180000001,0000000000000000 =>
 xsmincqp 8000000000000000,7f800000ff800000 0000000000000000,8000000000000000 => 8000000000000000,0000000000000000
 xsmincqp 8000000000000000,7f800000ff800000 8000000000000000,7f800000ff800000 => 7f800000ff800000,8000000000000000
 
-All done. Tested 97 different instruction groups
+All done. Tested 110 different instruction groups