aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2023-06-21 16:34:39 +0200
committerUros Bizjak <ubizjak@gmail.com>2023-06-21 16:34:39 +0200
commitb9401c3a323c59705eca177bf72c13c0d2f462b6 (patch)
treea301e41dac4e32dff54fe253638124cea21b747d
parentb375c5340b55d6e7ee703717831dd27528962570 (diff)
downloadgcc-b9401c3a323c59705eca177bf72c13c0d2f462b6.zip
gcc-b9401c3a323c59705eca177bf72c13c0d2f462b6.tar.gz
gcc-b9401c3a323c59705eca177bf72c13c0d2f462b6.tar.bz2
vect: Add testcases for unsigned conversions [PR110018]
Also test convresions with unsigned types. PR target/110018 gcc/testsuite/ChangeLog: * gcc.target/i386/pr110018-1.c: Use explicit signed types. * gcc.target/i386/pr110018-2.c: New test.
-rw-r--r--gcc/testsuite/gcc.target/i386/pr110018-1.c20
-rw-r--r--gcc/testsuite/gcc.target/i386/pr110018-2.c94
2 files changed, 104 insertions, 10 deletions
diff --git a/gcc/testsuite/gcc.target/i386/pr110018-1.c b/gcc/testsuite/gcc.target/i386/pr110018-1.c
index b1baffd..b6a3be7 100644
--- a/gcc/testsuite/gcc.target/i386/pr110018-1.c
+++ b/gcc/testsuite/gcc.target/i386/pr110018-1.c
@@ -4,14 +4,14 @@
/* { dg-final { scan-assembler-times {(?n)vcvt[dqw]*2p[dsh]} 5 } } */
void
-foo (double* __restrict a, char* b)
+foo (double* __restrict a, signed char* b)
{
a[0] = b[0];
a[1] = b[1];
}
void
-foo1 (float* __restrict a, char* b)
+foo1 (float* __restrict a, signed char* b)
{
a[0] = b[0];
a[1] = b[1];
@@ -20,7 +20,7 @@ foo1 (float* __restrict a, char* b)
}
void
-foo2 (_Float16* __restrict a, char* b)
+foo2 (_Float16* __restrict a, signed char* b)
{
a[0] = b[0];
a[1] = b[1];
@@ -33,14 +33,14 @@ foo2 (_Float16* __restrict a, char* b)
}
void
-foo3 (double* __restrict a, short* b)
+foo3 (double* __restrict a, signed short* b)
{
a[0] = b[0];
a[1] = b[1];
}
void
-foo4 (float* __restrict a, char* b)
+foo4 (float* __restrict a, signed char* b)
{
a[0] = b[0];
a[1] = b[1];
@@ -49,14 +49,14 @@ foo4 (float* __restrict a, char* b)
}
void
-foo5 (double* __restrict b, char* a)
+foo5 (double* __restrict b, signed char* a)
{
a[0] = b[0];
a[1] = b[1];
}
void
-foo6 (float* __restrict b, char* a)
+foo6 (float* __restrict b, signed char* a)
{
a[0] = b[0];
a[1] = b[1];
@@ -65,7 +65,7 @@ foo6 (float* __restrict b, char* a)
}
void
-foo7 (_Float16* __restrict b, char* a)
+foo7 (_Float16* __restrict b, signed char* a)
{
a[0] = b[0];
a[1] = b[1];
@@ -78,14 +78,14 @@ foo7 (_Float16* __restrict b, char* a)
}
void
-foo8 (double* __restrict b, short* a)
+foo8 (double* __restrict b, signed short* a)
{
a[0] = b[0];
a[1] = b[1];
}
void
-foo9 (float* __restrict b, char* a)
+foo9 (float* __restrict b, signed char* a)
{
a[0] = b[0];
a[1] = b[1];
diff --git a/gcc/testsuite/gcc.target/i386/pr110018-2.c b/gcc/testsuite/gcc.target/i386/pr110018-2.c
new file mode 100644
index 0000000..a663e07
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr110018-2.c
@@ -0,0 +1,94 @@
+/* { dg-do compile } */
+/* { dg-options "-mavx512fp16 -mavx512vl -O2 -mavx512dq" } */
+/* { dg-final { scan-assembler-times {(?n)vcvttp[dsh]2[dqw]} 5 } } */
+/* { dg-final { scan-assembler-times {(?n)vcvt[dqw]*2p[dsh]} 5 } } */
+
+void
+foo (double* __restrict a, unsigned char* b)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+}
+
+void
+foo1 (float* __restrict a, unsigned char* b)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+ a[2] = b[2];
+ a[3] = b[3];
+}
+
+void
+foo2 (_Float16* __restrict a, unsigned char* b)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+ a[2] = b[2];
+ a[3] = b[3];
+ a[4] = b[4];
+ a[5] = b[5];
+ a[6] = b[6];
+ a[7] = b[7];
+}
+
+void
+foo3 (double* __restrict a, unsigned short* b)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+}
+
+void
+foo4 (float* __restrict a, unsigned char* b)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+ a[2] = b[2];
+ a[3] = b[3];
+}
+
+void
+foo5 (double* __restrict b, unsigned char* a)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+}
+
+void
+foo6 (float* __restrict b, unsigned char* a)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+ a[2] = b[2];
+ a[3] = b[3];
+}
+
+void
+foo7 (_Float16* __restrict b, unsigned char* a)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+ a[2] = b[2];
+ a[3] = b[3];
+ a[4] = b[4];
+ a[5] = b[5];
+ a[6] = b[6];
+ a[7] = b[7];
+}
+
+void
+foo8 (double* __restrict b, unsigned short* a)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+}
+
+void
+foo9 (float* __restrict b, unsigned char* a)
+{
+ a[0] = b[0];
+ a[1] = b[1];
+ a[2] = b[2];
+ a[3] = b[3];
+}