From patchwork Thu Sep 20 18:52:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: will schmidt X-Patchwork-Id: 972658 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-486086-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=vnet.ibm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="V+81jeFP"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42GQpz3BVsz9sD2 for ; Fri, 21 Sep 2018 04:53:13 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:from:reply-to:to:cc:content-type:date:mime-version :content-transfer-encoding:message-id; q=dns; s=default; b=pnsZx SMol5M7u0HlmTEOplO00jY3dVY+Ju3AlHepLM2zQX71M4OaTgzgb/5QTioUcejh0 8D5r0hZTI6v1QYPl9KJCuMCfV3cSv2vkNEhpIF2Us0hpxI8KX+n63EmHBOdX+xSR 756up+Rkr3PB/a+8WPmeILu8DOKj1B/prKECIY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:from:reply-to:to:cc:content-type:date:mime-version :content-transfer-encoding:message-id; s=default; bh=thTw3Lr37/7 5gBOEfD2jNCq3MAE=; b=V+81jeFPf9M7T84GzaoyxoOnQwb26HQArX64OQhgFBt mOloDiZSO0LfUNLVmg+h2MceGY/Dls/1fVLWwz0Qzv0cD2/gYkA/1suAqdlE2dJi jRxPYmixICblkNybZCBx5nUWbH6TCohaVOju8qEQL3MLRk8qtjusae/JetHWcKhg = Received: (qmail 17441 invoked by alias); 20 Sep 2018 18:53:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 17428 invoked by uid 89); 20 Sep 2018 18:53:05 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KHOP_DYNAMIC, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=pixel, schmidt, Schmidt, 7.1 X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 20 Sep 2018 18:53:02 +0000 Received: from pps.filterd (m0098416.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w8KIn9rb173994 for ; Thu, 20 Sep 2018 14:53:00 -0400 Received: from e16.ny.us.ibm.com (e16.ny.us.ibm.com [129.33.205.206]) by mx0b-001b2d01.pphosted.com with ESMTP id 2mmgmr9fy3-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 20 Sep 2018 14:53:00 -0400 Received: from localhost by e16.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 20 Sep 2018 14:52:59 -0400 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e16.ny.us.ibm.com (146.89.104.203) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Thu, 20 Sep 2018 14:52:57 -0400 Received: from b01ledav003.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com [9.57.199.108]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w8KIqujX29819010 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 20 Sep 2018 18:52:56 GMT Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0112FB2071; Thu, 20 Sep 2018 14:51:24 -0400 (EDT) Received: from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id AB508B2065; Thu, 20 Sep 2018 14:51:23 -0400 (EDT) Received: from [9.10.86.107] (unknown [9.10.86.107]) by b01ledav003.gho.pok.ibm.com (Postfix) with ESMTP; Thu, 20 Sep 2018 14:51:23 -0400 (EDT) Subject: [PATCH, rs6000] Update vec_splat references in testcases for validity. From: Will Schmidt Reply-To: will_schmidt@vnet.ibm.com To: Segher Boessenkool , David Edelsohn , Bill Schmidt Cc: GCC Patches Date: Thu, 20 Sep 2018 13:52:55 -0500 Mime-Version: 1.0 x-cbid: 18092018-0072-0000-0000-000003A740D4 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00009741; HX=3.00000242; KW=3.00000007; PH=3.00000004; SC=3.00000266; SDB=6.01091172; UDB=6.00563776; IPR=6.00871195; MB=3.00023418; MTD=3.00000008; XFM=3.00000015; UTC=2018-09-20 18:52:58 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18092018-0073-0000-0000-0000497D2D38 Message-Id: <1537469575.19375.24.camel@brimstone.rchland.ibm.com> X-IsSubscribed: yes Hi, This updates those powerpc testsuite tests that are using the vec_splat() builtin with an invalid arg1. Per discussions during the review of gimple-folding for vec_splat(), it was clarified that arg1 for vec_splat() should be a valid index into the referenced vector (no modulo). OK for trunk? Thanks, -Will [testsuite] 2018-11-20 Will Schmidt * gcc.target/powerpc/fold-vec-splat-char.c: Remove invalid vec_splat calls from recently added tests. Update instruction counts. * gcc.target/powerpc/fold-vec-splat-floatdouble.c: Same. * gcc.target/powerpc/fold-vec-splat-int.c: Same. * gcc.target/powerpc/fold-vec-splat-pixel.c: Same. * gcc.target/powerpc/fold-vec-splat-short.c: Same. * g++.dg/ext/altivec-6.C: Updated vec_splat() calls. diff --git a/gcc/testsuite/g++.dg/ext/altivec-6.C b/gcc/testsuite/g++.dg/ext/altivec-6.C index 63ae0b0..4c863ef 100644 --- a/gcc/testsuite/g++.dg/ext/altivec-6.C +++ b/gcc/testsuite/g++.dg/ext/altivec-6.C @@ -20,9 +20,11 @@ void foo(void) { vec_dststt(buf, a, 3); vec_dststt(buf, a, 2); vp = vec_sld(vp, vp, 5); vbc = vec_splat(vbc, 7); - vbs = vec_splat(vbs, 12); - vp = vec_splat(vp, 17); - vbi = vec_splat(vbi, 31); + /* The second argument to vec_splat needs to be less than the number of + elements in the referenced vector. */ + vbs = vec_splat(vbs, 4); + vp = vec_splat(vp, 1); + vbi = vec_splat(vbi, 15); } diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-char.c index d50d073..ca9ea3c 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-char.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-char.c @@ -10,46 +10,31 @@ vector bool char testb_0 (vector bool char x) { return vec_splat (x, 0b00000); } vector bool char testb_1 (vector bool char x) { return vec_splat (x, 0b00001); } vector bool char testb_2 (vector bool char x) { return vec_splat (x, 0b00010); } vector bool char testb_4 (vector bool char x) { return vec_splat (x, 0b00100); } vector bool char testb_8 (vector bool char x) { return vec_splat (x, 0b01000); } -vector bool char testb_10 (vector bool char x) { return vec_splat (x, 0b10000); } -vector bool char testb_1e (vector bool char x) { return vec_splat (x, 0b11110); } -vector bool char testb_1f (vector bool char x) { return vec_splat (x, 0b11111); } vector signed char tests_0 (vector signed char x) { return vec_splat (x, 0b00000); } vector signed char tests_1 (vector signed char x) { return vec_splat (x, 0b00001); } vector signed char tests_2 (vector signed char x) { return vec_splat (x, 0b00010); } vector signed char tests_4 (vector signed char x) { return vec_splat (x, 0b00100); } vector signed char tests_8 (vector signed char x) { return vec_splat (x, 0b01000); } -vector signed char tests_10 (vector signed char x) { return vec_splat (x, 0b10000); } -vector signed char tests_1e (vector signed char x) { return vec_splat (x, 0b11110); } -vector signed char tests_1f (vector signed char x) { return vec_splat (x, 0b11111); } vector unsigned char testu_0 (vector unsigned char x) { return vec_splat (x, 0b00000); } vector unsigned char testu_1 (vector unsigned char x) { return vec_splat (x, 0b00001); } vector unsigned char testu_2 (vector unsigned char x) { return vec_splat (x, 0b00010); } vector unsigned char testu_4 (vector unsigned char x) { return vec_splat (x, 0b00100); } vector unsigned char testu_8 (vector unsigned char x) { return vec_splat (x, 0b01000); } -vector unsigned char testu_10 (vector unsigned char x) { return vec_splat (x, 0b10000); } -vector unsigned char testu_1e (vector unsigned char x) { return vec_splat (x, 0b11110); } -vector unsigned char testu_1f (vector unsigned char x) { return vec_splat (x, 0b11111); } /* Similar tests as above, but the source vector is a known constant. */ const vector bool char by = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'}; const vector signed char sy = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'}; const vector unsigned char uy = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'}; vector bool char test_bc (vector bool char x) { return vec_splat (by, 0b00010); } vector signed char test_sc (vector signed char x) { return vec_splat (sy, 0b00011); } vector unsigned char test_uc (vector unsigned char x) { return vec_splat (uy, 0b00110); } -/* Similar tests as above, mask is greater than number of elements in the - source vector. */ -vector bool char test_obc (vector bool char x) { return vec_splat (by, 0b10010); } -vector signed char test_osc (vector signed char x) { return vec_splat (sy, 0b10011); } -vector unsigned char test_ouc (vector unsigned char x) { return vec_splat (uy, 0b10110); } - // vec_splat() using variable vectors should generate the vspltb instruction. -/* { dg-final { scan-assembler-times "vspltb" 24 } } */ +/* { dg-final { scan-assembler-times "vspltb" 15 } } */ // vec_splat() using a constant vector should generate a load. -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 6 } } */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvw4x\M} 3 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c index fd74002..5d052c9 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-floatdouble.c @@ -8,39 +8,22 @@ #include vector float testf_00 (vector float x) { return vec_splat (x, 0b00000); } vector float testf_01 (vector float x) { return vec_splat (x, 0b00001); } vector float testf_02 (vector float x) { return vec_splat (x, 0b00010); } -vector float testf_04 (vector float x) { return vec_splat (x, 0b00100); } -vector float testf_08 (vector float x) { return vec_splat (x, 0b01000); } -vector float testf_0f (vector float x) { return vec_splat (x, 0b01111); } -vector float testf_10 (vector float x) { return vec_splat (x, 0b10000); } -vector float testf_1e (vector float x) { return vec_splat (x, 0b11110); } -vector float testf_1f (vector float x) { return vec_splat (x, 0b11111); } vector double testd_00 (vector double x) { return vec_splat (x, 0b00000); } vector double testd_01 (vector double x) { return vec_splat (x, 0b00001); } vector double testd_02 (vector double x) { return vec_splat (x, 0b00010); } -vector double testd_04 (vector double x) { return vec_splat (x, 0b00100); } -vector double testd_08 (vector double x) { return vec_splat (x, 0b01000); } -vector double testd_0f (vector double x) { return vec_splat (x, 0b01111); } -vector double testd_10 (vector double x) { return vec_splat (x, 0b10000); } -vector double testd_1e (vector double x) { return vec_splat (x, 0b11110); } -vector double testd_1f (vector double x) { return vec_splat (x, 0b11111); } /* Similar tests as above, but the source vector is a known constant. */ vector float test_fc () { const vector float y = { 7.1, 8.2, 9.3, 10.4}; return vec_splat (y, 0b00010); } vector double test_dc () { const vector double y = { 3.0, 5.0 }; return vec_splat (y, 0b00010); } -/* Similar tests as above, mask is greater than number of elements in the - source vector. */ -vector float test_ofc () { const vector float y = { 7.1, 8.2, 9.3, 10.4}; return vec_splat (y, 0b10010); } -vector double test_odc () { const vector double y = { 3.0, 5.0 }; return vec_splat (y, 0b10010); } - /* lvx or lxvd2x for loading of the constants. */ /* vspltw or xxspltw for non-constants with the float type. */ /* xxpermdi for non-constants with the double type. */ -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M} 4 } } */ -/* { dg-final { scan-assembler-times "vspltw|xxspltw" 9 } } */ -/* { dg-final { scan-assembler-times "xxpermdi" 9 } } */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M} 2 } } */ +/* { dg-final { scan-assembler-times "vspltw|xxspltw" 3 } } */ +/* { dg-final { scan-assembler-times "xxpermdi" 4 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-int.c index 7697853..5df96d1 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-int.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-int.c @@ -8,43 +8,22 @@ #include vector bool int testb_0 (vector bool int x) { return vec_splat (x, 0b00000); } vector bool int testb_1 (vector bool int x) { return vec_splat (x, 0b00001); } vector bool int testb_2 (vector bool int x) { return vec_splat (x, 0b00010); } -vector bool int testb_4 (vector bool int x) { return vec_splat (x, 0b00100); } -vector bool int testb_8 (vector bool int x) { return vec_splat (x, 0b01000); } -vector bool int testb_10 (vector bool int x) { return vec_splat (x, 0b10000); } -vector bool int testb_1e (vector bool int x) { return vec_splat (x, 0b11110); } -vector bool int testb_1f (vector bool int x) { return vec_splat (x, 0b11111); } vector signed int tests_0 (vector signed int x) { return vec_splat (x, 0b00000); } vector signed int tests_1 (vector signed int x) { return vec_splat (x, 0b00001); } vector signed int tests_2 (vector signed int x) { return vec_splat (x, 0b00010); } -vector signed int tests_4 (vector signed int x) { return vec_splat (x, 0b00100); } -vector signed int tests_8 (vector signed int x) { return vec_splat (x, 0b01000); } -vector signed int tests_10 (vector signed int x) { return vec_splat (x, 0b10000); } -vector signed int tests_1e (vector signed int x) { return vec_splat (x, 0b11110); } -vector signed int tests_1f (vector signed int x) { return vec_splat (x, 0b11111); } vector unsigned int testu_0 (vector unsigned int x) { return vec_splat (x, 0b00000); } vector unsigned int testu_1 (vector unsigned int x) { return vec_splat (x, 0b00001); } vector unsigned int testu_2 (vector unsigned int x) { return vec_splat (x, 0b00010); } -vector unsigned int testu_4 (vector unsigned int x) { return vec_splat (x, 0b00100); } -vector unsigned int testu_8 (vector unsigned int x) { return vec_splat (x, 0b01000); } -vector unsigned int testu_10 (vector unsigned int x) { return vec_splat (x, 0b10000); } -vector unsigned int testu_1e (vector unsigned int x) { return vec_splat (x, 0b11110); } -vector unsigned int testu_1f (vector unsigned int x) { return vec_splat (x, 0b11111); } /* Similar test as above, but the source vector is a known constant. */ vector bool int test_bic () { const vector bool int y = { 1,2,3,4}; return vec_splat (y, 0b00010); } vector signed int test_sic () { const vector signed int y = { 1,2,3,4}; return vec_splat (y, 0b00010); } vector unsigned int test_uic () { const vector unsigned int y = { 1,2,3,4}; return vec_splat (y, 0b00010); } -/* Similar tests as above, mask is greater than number of elements in the - source vector. */ -vector bool int test_obic () { const vector bool int y = { 1,2,3,4}; return vec_splat (y, 0b10010); } -vector signed int test_osic () { const vector signed int y = { 1,2,3,4}; return vec_splat (y, 0b10010); } -vector unsigned int test_ouic () { const vector unsigned int y = { 1,2,3,4}; return vec_splat (y, 0b10010); } - -/* { dg-final { scan-assembler-times "vspltisw" 6 } } */ -/* { dg-final { scan-assembler-times "vspltw|xxspltw" 24 } } */ +/* { dg-final { scan-assembler-times "vspltisw" 3 } } */ +/* { dg-final { scan-assembler-times "vspltw|xxspltw" 9 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-pixel.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-pixel.c index 7170588..bb9b516 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-pixel.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-pixel.c @@ -9,19 +9,11 @@ vector pixel test1_00 (vector pixel x) { return vec_splat (x, 0b00000); } vector pixel test1_01 (vector pixel x) { return vec_splat (x, 0b00001); } vector pixel test1_02 (vector pixel x) { return vec_splat (x, 0b00010); } vector pixel test1_04 (vector pixel x) { return vec_splat (x, 0b00100); } -vector pixel test1_08 (vector pixel x) { return vec_splat (x, 0b01000); } -vector pixel test1_10 (vector pixel x) { return vec_splat (x, 0b10000); } -vector pixel test1_1e (vector pixel x) { return vec_splat (x, 0b11110); } -vector pixel test1_1f (vector pixel x) { return vec_splat (x, 0b11111); } /* Similar test as above, but the source vector is a known constant. */ vector pixel test_p () { const vector pixel y = { 1,2,3,4}; return vec_splat (y, 0b00010); } -/* Similar tests as above, mask is greater than number of elements in the - source vector. */ -vector pixel test_op () { const vector pixel y = { 1,2,3,4}; return vec_splat (y, 0b10010); } - -/* { dg-final { scan-assembler-times "vspltish" 2 } } */ -/* { dg-final { scan-assembler-times "vsplth" 8 } } */ +/* { dg-final { scan-assembler-times "vspltish" 1 } } */ +/* { dg-final { scan-assembler-times "vsplth" 4 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-short.c index 96c553f..92bdfa4 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-short.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-short.c @@ -9,41 +9,23 @@ vector bool short testb_00 (vector bool short x) { return vec_splat (x, 0b00000); } vector bool short testb_01 (vector bool short x) { return vec_splat (x, 0b00001); } vector bool short testb_02 (vector bool short x) { return vec_splat (x, 0b00010); } vector bool short testb_04 (vector bool short x) { return vec_splat (x, 0b00100); } -vector bool short testb_08 (vector bool short x) { return vec_splat (x, 0b01000); } -vector bool short testb_10 (vector bool short x) { return vec_splat (x, 0b10000); } -vector bool short testb_1e (vector bool short x) { return vec_splat (x, 0b11110); } -vector bool short testb_1f (vector bool short x) { return vec_splat (x, 0b11111); } vector signed short tests_00 (vector signed short x) { return vec_splat (x, 0b00000); } vector signed short tests_01 (vector signed short x) { return vec_splat (x, 0b00001); } vector signed short tests_02 (vector signed short x) { return vec_splat (x, 0b00010); } vector signed short tests_04 (vector signed short x) { return vec_splat (x, 0b00100); } -vector signed short tests_08 (vector signed short x) { return vec_splat (x, 0b01000); } -vector signed short tests_10 (vector signed short x) { return vec_splat (x, 0b10000); } -vector signed short tests_1e (vector signed short x) { return vec_splat (x, 0b11110); } -vector signed short tests_1f (vector signed short x) { return vec_splat (x, 0b11111); } vector unsigned short testu_00 (vector unsigned short x) { return vec_splat (x, 0b00000); } vector unsigned short testu_01 (vector unsigned short x) { return vec_splat (x, 0b00001); } vector unsigned short testu_02 (vector unsigned short x) { return vec_splat (x, 0b00010); } vector unsigned short testu_04 (vector unsigned short x) { return vec_splat (x, 0b00100); } -vector unsigned short testu_08 (vector unsigned short x) { return vec_splat (x, 0b01000); } -vector unsigned short testu_10 (vector unsigned short x) { return vec_splat (x, 0b10000); } -vector unsigned short testu_1e (vector unsigned short x) { return vec_splat (x, 0b11110); } -vector unsigned short testu_1f (vector unsigned short x) { return vec_splat (x, 0b11111); } /* Similar test as above, but the source vector is a known constant. */ vector bool short test_bs () { const vector bool short y = {1, 2, 3, 4, 5, 6, 7, 8}; return vec_splat (y, 0b00010); } vector signed short test_ss () { const vector signed short y = {1, 2, 3, 4, 5, 6, 7, 8}; return vec_splat (y, 0b00010); } vector unsigned short test_us () { const vector unsigned short y = {1, 2, 3, 4, 5, 6, 7, 8}; return vec_splat (y, 0b00010); } -/* Similar tests as above, mask is greater than number of elements in the - source vector. */ -vector bool short test_obs () { const vector bool short y = {1, 2, 3, 4, 5, 6, 7, 8}; return vec_splat (y, 0b10010); } -vector signed short test_oss () { const vector signed short y = {1, 2, 3, 4, 5, 6, 7, 8}; return vec_splat (y, 0b10010); } -vector unsigned short test_ous () { const vector unsigned short y = {1, 2, 3, 4, 5, 6, 7, 8}; return vec_splat (y, 0b10010); } - -/* { dg-final { scan-assembler-times "vspltish" 6 } } */ -/* { dg-final { scan-assembler-times "vsplth" 24 } } */ +/* { dg-final { scan-assembler-times "vspltish" 3 } } */ +/* { dg-final { scan-assembler-times "vsplth" 12 } } */