From: Carl Love Date: Tue, 17 Nov 2020 01:53:22 +0000 (-0600) Subject: VSX Mask Manipulation operation tests. X-Git-Tag: VALGRIND_3_17_0~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c31707cd3d795bcdd3afc540b5aad75d1e50008;p=thirdparty%2Fvalgrind.git VSX Mask Manipulation operation tests. --- diff --git a/NEWS b/NEWS index 6cb270c1c4..c8fe48f709 100644 --- 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 diff --git a/none/tests/ppc64/test_isa_3_1_RT.c b/none/tests/ppc64/test_isa_3_1_RT.c index ce70c7ac0f..9e2e352f89 100644 --- a/none/tests/ppc64/test_isa_3_1_RT.c +++ b/none/tests/ppc64/test_isa_3_1_RT.c @@ -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 */ diff --git a/none/tests/ppc64/test_isa_3_1_RT.stdout.exp b/none/tests/ppc64/test_isa_3_1_RT.stdout.exp index 7cacb36440..132ae31196 100644 --- a/none/tests/ppc64/test_isa_3_1_RT.stdout.exp +++ b/none/tests/ppc64/test_isa_3_1_RT.stdout.exp @@ -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 diff --git a/none/tests/ppc64/test_isa_3_1_VRT.c b/none/tests/ppc64/test_isa_3_1_VRT.c index f5f5536d8e..fb5d3d10f1 100644 --- a/none/tests/ppc64/test_isa_3_1_VRT.c +++ b/none/tests/ppc64/test_isa_3_1_VRT.c @@ -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 */ diff --git a/none/tests/ppc64/test_isa_3_1_VRT.stdout.exp b/none/tests/ppc64/test_isa_3_1_VRT.stdout.exp index 70e8feeb1f..39c4d86197 100644 --- a/none/tests/ppc64/test_isa_3_1_VRT.stdout.exp +++ b/none/tests/ppc64/test_isa_3_1_VRT.stdout.exp @@ -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