public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-3929] LoongArch: Add testsuite framework for Loongson SX/ASX.
@ 2023-09-14  0:44 LuluCheng
  0 siblings, 0 replies; only message in thread
From: LuluCheng @ 2023-09-14  0:44 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:a53d7133616dbcdd95ee7376ae382933fac8fd66

commit r14-3929-ga53d7133616dbcdd95ee7376ae382933fac8fd66
Author: Xiaolong Chen <chenxiaolong@loongson.cn>
Date:   Mon Sep 11 09:36:35 2023 +0800

    LoongArch: Add testsuite framework for Loongson SX/ASX.
    
    gcc/testsuite/ChangeLog:
    
            * gcc.target/loongarch/vector/loongarch-vector.exp: New test.
            * gcc.target/loongarch/vector/simd_correctness_check.h: New test.

Diff:
---
 .../loongarch/vector/loongarch-vector.exp          | 42 +++++++++++++++++
 .../loongarch/vector/simd_correctness_check.h      | 54 ++++++++++++++++++++++
 2 files changed, 96 insertions(+)

diff --git a/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp b/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp
new file mode 100644
index 000000000000..2c37aa91d4ce
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/loongarch-vector.exp
@@ -0,0 +1,42 @@
+#Copyright(C) 2023 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
+# <http: //www.gnu.org/licenses/>.
+
+#GCC testsuite that uses the `dg.exp' driver.
+
+#Exit immediately if this isn't a LoongArch target.
+if ![istarget loongarch*-*-*] then {
+    return
+}
+
+#Load support procs.
+load_lib gcc-dg.exp
+
+#If a testcase doesn't have special options, use these.
+global DEFAULT_CFLAGS
+if ![info exists DEFAULT_CFLAGS] then {
+    set DEFAULT_CFLAGS " "
+}
+
+#Initialize `dg'.
+dg-init
+
+#Main loop.
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/lsx/*.\[cS\]]] \
+	" -mlsx" $DEFAULT_CFLAGS
+dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/lasx/*.\[cS\]]] \
+	" -mlasx" $DEFAULT_CFLAGS
+# All done.
+dg-finish
diff --git a/gcc/testsuite/gcc.target/loongarch/vector/simd_correctness_check.h b/gcc/testsuite/gcc.target/loongarch/vector/simd_correctness_check.h
new file mode 100644
index 000000000000..eb7fbd59cc73
--- /dev/null
+++ b/gcc/testsuite/gcc.target/loongarch/vector/simd_correctness_check.h
@@ -0,0 +1,54 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define ASSERTEQ_64(line, ref, res)                                           \
+  do                                                                          \
+    {                                                                         \
+      int fail = 0;                                                           \
+      for (size_t i = 0; i < sizeof (res) / sizeof (res[0]); ++i)             \
+        {                                                                     \
+          long *temp_ref = &ref[i], *temp_res = &res[i];                      \
+          if (abs (*temp_ref - *temp_res) > 0)                                \
+            {                                                                 \
+              printf (" error: %s at line %ld , expected " #ref               \
+                      "[%ld]:0x%lx, got: 0x%lx\n",                            \
+                      __FILE__, line, i, *temp_ref, *temp_res);               \
+              fail = 1;                                                       \
+            }                                                                 \
+        }                                                                     \
+      if (fail == 1)                                                          \
+        abort ();                                                             \
+    }                                                                         \
+  while (0)
+
+#define ASSERTEQ_32(line, ref, res)                                           \
+  do                                                                          \
+    {                                                                         \
+      int fail = 0;                                                           \
+      for (size_t i = 0; i < sizeof (res) / sizeof (res[0]); ++i)             \
+        {                                                                     \
+          int *temp_ref = &ref[i], *temp_res = &res[i];                       \
+          if (abs (*temp_ref - *temp_res) > 0)                                \
+            {                                                                 \
+              printf (" error: %s at line %ld , expected " #ref               \
+                      "[%ld]:0x%x, got: 0x%x\n",                              \
+                      __FILE__, line, i, *temp_ref, *temp_res);               \
+              fail = 1;                                                       \
+            }                                                                 \
+        }                                                                     \
+      if (fail == 1)                                                          \
+        abort ();                                                             \
+    }                                                                         \
+  while (0)
+
+#define ASSERTEQ_int(line, ref, res)                                          \
+  do                                                                          \
+    {                                                                         \
+      if (ref != res)                                                         \
+        {                                                                     \
+          printf (" error: %s at line %ld , expected %d, got %d\n", __FILE__, \
+                  line, ref, res);                                            \
+        }                                                                     \
+    }                                                                         \
+  while (0)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-09-14  0:44 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-09-14  0:44 [gcc r14-3929] LoongArch: Add testsuite framework for Loongson SX/ASX LuluCheng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).