From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13063 invoked by alias); 16 Jan 2015 18:18:44 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 13049 invoked by uid 89); 16 Jan 2015 18:18:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: service87.mimecast.com Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 16 Jan 2015 18:18:41 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by service87.mimecast.com; Fri, 16 Jan 2015 18:18:38 +0000 Received: from [10.1.203.161] ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 16 Jan 2015 18:18:36 +0000 Message-ID: <54B95625.3090604@arm.com> Date: Fri, 16 Jan 2015 18:24:00 -0000 From: Tejas Belagod User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: Christophe Lyon , "gcc-patches@gcc.gnu.org" Subject: Re: [[ARM/AArch64][testsuite] 24/36] Add vmul_n tests. References: <1421162314-25779-1-git-send-email-christophe.lyon@linaro.org> <1421162314-25779-25-git-send-email-christophe.lyon@linaro.org> In-Reply-To: <1421162314-25779-25-git-send-email-christophe.lyon@linaro.org> X-MC-Unique: 115011618183801601 Content-Type: text/plain; charset=WINDOWS-1252; format=flowed Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2015-01/txt/msg01463.txt.bz2 On 13/01/15 15:18, Christophe Lyon wrote: > * gcc.target/aarch64/advsimd-intrinsics/vmul_n.c: New file. > > diff --git a/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c= b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c > new file mode 100644 > index 0000000..be0ee65 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c > @@ -0,0 +1,96 @@ > +#include > +#include "arm-neon-ref.h" > +#include "compute-ref-data.h" > + > +/* Expected results. */ > +VECT_VAR_DECL(expected,int,16,4) [] =3D { 0xfef0, 0xff01, 0xff12, 0xff23= }; > +VECT_VAR_DECL(expected,int,32,2) [] =3D { 0xfffffde0, 0xfffffe02 }; > +VECT_VAR_DECL(expected,uint,16,4) [] =3D { 0xfcd0, 0xfd03, 0xfd36, 0xfd6= 9 }; > +VECT_VAR_DECL(expected,uint,32,2) [] =3D { 0xfffffbc0, 0xfffffc04 }; > +VECT_VAR_DECL(expected,hfloat,32,2) [] =3D { 0xc3b26666, 0xc3a74000 }; > +VECT_VAR_DECL(expected,int,16,8) [] =3D { 0xfab0, 0xfb05, 0xfb5a, 0xfbaf, > + 0xfc04, 0xfc59, 0xfcae, 0xfd03 }; > +VECT_VAR_DECL(expected,int,32,4) [] =3D { 0xfffff9a0, 0xfffffa06, > + 0xfffffa6c, 0xfffffad2 }; > +VECT_VAR_DECL(expected,uint,16,8) [] =3D { 0xf890, 0xf907, 0xf97e, 0xf9f= 5, > + 0xfa6c, 0xfae3, 0xfb5a, 0xfbd1 }; > +VECT_VAR_DECL(expected,uint,32,4) [] =3D { 0xfffff780, 0xfffff808, > + 0xfffff890, 0xfffff918 }; > +VECT_VAR_DECL(expected,hfloat,32,4) [] =3D { 0xc4b1cccd, 0xc4a6b000, > + 0xc49b9333, 0xc4907667 }; > + > +#define INSN_NAME vmul_n > +#define TEST_MSG "VMUL_N" > + > +#define FNNAME1(NAME) exec_ ## NAME > +#define FNNAME(NAME) FNNAME1(NAME) > + > +void FNNAME (INSN_NAME) (void) > +{ > +#define DECL_VMUL(VAR) \ > + DECL_VARIABLE(VAR, int, 16, 4); \ > + DECL_VARIABLE(VAR, int, 32, 2); \ > + DECL_VARIABLE(VAR, uint, 16, 4); \ > + DECL_VARIABLE(VAR, uint, 32, 2); \ > + DECL_VARIABLE(VAR, float, 32, 2); \ > + DECL_VARIABLE(VAR, int, 16, 8); \ > + DECL_VARIABLE(VAR, int, 32, 4); \ > + DECL_VARIABLE(VAR, uint, 16, 8); \ > + DECL_VARIABLE(VAR, uint, 32, 4); \ > + DECL_VARIABLE(VAR, float, 32, 4) > + > + /* vector_res =3D vmul_n(vector,val), then store the result. */ > +#define TEST_VMUL_N(Q, T1, T2, W, N, L) \ > + VECT_VAR(vector_res, T1, W, N) =3D \ > + vmul##Q##_n_##T2##W(VECT_VAR(vector, T1, W, N), \ > + L); \ > + vst1##Q##_##T2##W(VECT_VAR(result, T1, W, N), \ > + VECT_VAR(vector_res, T1, W, N)) > + > + DECL_VMUL(vector); > + DECL_VMUL(vector_res); > + > + clean_results (); > + > + /* Initialize vector from pre-initialized values. */ > + VLOAD(vector, buffer, , int, s, 16, 4); > + VLOAD(vector, buffer, , int, s, 32, 2); > + VLOAD(vector, buffer, , uint, u, 16, 4); > + VLOAD(vector, buffer, , uint, u, 32, 2); > + VLOAD(vector, buffer, , float, f, 32, 2); > + VLOAD(vector, buffer, q, int, s, 16, 8); > + VLOAD(vector, buffer, q, int, s, 32, 4); > + VLOAD(vector, buffer, q, uint, u, 16, 8); > + VLOAD(vector, buffer, q, uint, u, 32, 4); > + VLOAD(vector, buffer, q, float, f, 32, 4); > + > + /* Choose multiplier arbitrarily. */ > + TEST_VMUL_N(, int, s, 16, 4, 0x11); > + TEST_VMUL_N(, int, s, 32, 2, 0x22); > + TEST_VMUL_N(, uint, u, 16, 4, 0x33); > + TEST_VMUL_N(, uint, u, 32, 2, 0x44); > + TEST_VMUL_N(, float, f, 32, 2, 22.3f); > + TEST_VMUL_N(q, int, s, 16, 8, 0x55); > + TEST_VMUL_N(q, int, s, 32, 4, 0x66); > + TEST_VMUL_N(q, uint, u, 16, 8, 0x77); > + TEST_VMUL_N(q, uint, u, 32, 4, 0x88); > + TEST_VMUL_N(q, float, f, 32, 4, 88.9f); > + > + CHECK(TEST_MSG, int, 16, 4, PRIx64, expected, ""); > + CHECK(TEST_MSG, int, 32, 2, PRIx32, expected, ""); > + CHECK(TEST_MSG, uint, 16, 4, PRIx64, expected, ""); > + CHECK(TEST_MSG, uint, 32, 2, PRIx32, expected, ""); > + CHECK_FP(TEST_MSG, float, 32, 2, PRIx32, expected, ""); > + CHECK(TEST_MSG, int, 16, 8, PRIx64, expected, ""); > + CHECK(TEST_MSG, int, 32, 4, PRIx32, expected, ""); > + CHECK(TEST_MSG, uint, 16, 8, PRIx64, expected, ""); > + CHECK(TEST_MSG, uint, 32, 4, PRIx32, expected, ""); > + CHECK_FP(TEST_MSG, float, 32, 4, PRIx32, expected, ""); > +} > + > +int main (void) > +{ > + FNNAME (INSN_NAME) (); > + > + return 0; > +} > LGTM. Tejas.