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.
This commit is contained in:
parent
b375c5340b
commit
b9401c3a32
2 changed files with 104 additions and 10 deletions
|
@ -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];
|
||||
|
|
94
gcc/testsuite/gcc.target/i386/pr110018-2.c
Normal file
94
gcc/testsuite/gcc.target/i386/pr110018-2.c
Normal file
|
@ -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];
|
||||
}
|
Loading…
Add table
Reference in a new issue