From 338329a085ccce3c898694e0326831ea9a39ff05 Mon Sep 17 00:00:00 2001 From: Kyrylo Tkachov Date: Wed, 11 Jun 2014 09:19:14 +0000 Subject: [PATCH] [AArch64] Add CRC32 ACLE intrinsics testsuite. * gcc.target/aarch64/acle/acle.exp: New. * gcc.target/aarch64/acle/crc32b.c: New test. * gcc.target/aarch64/acle/crc32cb.c: Likewise. * gcc.target/aarch64/acle/crc32cd.c: Likewise. * gcc.target/aarch64/acle/crc32ch.c: Likewise. * gcc.target/aarch64/acle/crc32cw.c: Likewise. * gcc.target/aarch64/acle/crc32d.c: Likewise. * gcc.target/aarch64/acle/crc32h.c: Likewise. * gcc.target/aarch64/acle/crc32w.c: Likewise. --This line,gand those below, will be ignored-- A gcc/testsuite/gcc.target/aarch64/acle A gcc/testsuite/gcc.target/aarch64/acle/acle.exp A gcc/testsuite/gcc.target/aarch64/acle/crc32b.c A gcc/testsuite/gcc.target/aarch64/acle/crc32d.c A gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c A gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c A gcc/testsuite/gcc.target/aarch64/acle/crc32w.c A gcc/testsuite/gcc.target/aarch64/acle/crc32h.c A gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c A gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c M gcc/testsuite/ChangeLog From-SVN: r211441 --- gcc/testsuite/ChangeLog | 12 +++++++ .../gcc.target/aarch64/acle/acle.exp | 35 +++++++++++++++++++ .../gcc.target/aarch64/acle/crc32b.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32cb.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32cd.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32ch.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32cw.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32d.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32h.c | 15 ++++++++ .../gcc.target/aarch64/acle/crc32w.c | 15 ++++++++ 10 files changed, 167 insertions(+) create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/acle.exp create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32b.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32d.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32h.c create mode 100644 gcc/testsuite/gcc.target/aarch64/acle/crc32w.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 394eca23f38..ce69a0e2343 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,15 @@ +2014-06-11 Kyrylo Tkachov + + * gcc.target/aarch64/acle/acle.exp: New. + * gcc.target/aarch64/acle/crc32b.c: New test. + * gcc.target/aarch64/acle/crc32cb.c: Likewise. + * gcc.target/aarch64/acle/crc32cd.c: Likewise. + * gcc.target/aarch64/acle/crc32ch.c: Likewise. + * gcc.target/aarch64/acle/crc32cw.c: Likewise. + * gcc.target/aarch64/acle/crc32d.c: Likewise. + * gcc.target/aarch64/acle/crc32h.c: Likewise. + * gcc.target/aarch64/acle/crc32w.c: Likewise. + 2014-06-11 Evgeny Stupachenko PR tree-optimization/52252 diff --git a/gcc/testsuite/gcc.target/aarch64/acle/acle.exp b/gcc/testsuite/gcc.target/aarch64/acle/acle.exp new file mode 100644 index 00000000000..e820f6c8c4d --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/acle.exp @@ -0,0 +1,35 @@ +# Copyright (C) 2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GCC; see the file COPYING3. If not see +# . + +# GCC testsuite that uses the `dg.exp' driver. + +# Exit immediately if this isn't an AArch64 target. +if ![istarget aarch64*-*-*] then { + return +} + +# Load support procs. +load_lib gcc-dg.exp + +# Initialize `dg'. +dg-init + +# Main loop. +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cCS\]]] \ + "" "" + +# All done. +dg-finish diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c new file mode 100644 index 00000000000..bf9a3d82a73 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32b.c @@ -0,0 +1,15 @@ +/* Test the crc32b ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32b (uint32_t arg0, uint8_t arg1) +{ + return __crc32b (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32b\tw..?, w..?, w..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c new file mode 100644 index 00000000000..a5a39b139dc --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c @@ -0,0 +1,15 @@ +/* Test the crc32cb ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32cb (uint32_t arg0, uint8_t arg1) +{ + return __crc32cb (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32cb\tw..?, w..?, w..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c new file mode 100644 index 00000000000..b50097a20d0 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c @@ -0,0 +1,15 @@ +/* Test the crc32cd ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32cd (uint32_t arg0, uint64_t arg1) +{ + return __crc32cd (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32cx\tw..?, w..?, x..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c new file mode 100644 index 00000000000..523faa25be9 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32ch.c @@ -0,0 +1,15 @@ +/* Test the crc32ch ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32ch (uint32_t arg0, uint16_t arg1) +{ + return __crc32ch (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32ch\tw..?, w..?, w..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c new file mode 100644 index 00000000000..531e6043209 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32cw.c @@ -0,0 +1,15 @@ +/* Test the crc32cw ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32cw (uint32_t arg0, uint32_t arg1) +{ + return __crc32cw (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32cw\tw..?, w..?, w..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c new file mode 100644 index 00000000000..14fa627ba91 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32d.c @@ -0,0 +1,15 @@ +/* Test the crc32d ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32d (uint32_t arg0, uint64_t arg1) +{ + return __crc32d (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32x\tw..?, w..?, x..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c new file mode 100644 index 00000000000..90819e615cb --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32h.c @@ -0,0 +1,15 @@ +/* Test the crc32h ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32h (uint32_t arg0, uint16_t arg1) +{ + return __crc32h (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32h\tw..?, w..?, w..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c b/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c new file mode 100644 index 00000000000..006f17635b8 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/acle/crc32w.c @@ -0,0 +1,15 @@ +/* Test the crc32w ACLE intrinsic. */ + +/* { dg-do assemble } */ +/* { dg-options "-save-temps -O2 -march=armv8-a+crc" } */ + +#include "arm_acle.h" + +uint32_t +test_crc32w (uint32_t arg0, uint32_t arg1) +{ + return __crc32w (arg0, arg1); +} + +/* { dg-final { scan-assembler "crc32w\tw..?, w..?, w..?\n" } } */ +/* { dg-final { cleanup-saved-temps } } */