vector long long and vector double require vsx support.

gcc/testsuite/ChangeLog

    * gcc.target/powerpc/altivec_vld_vst_addr.c: Remove, split into 
    altivec_vld_vst_addr-1.c and altivec_vld_vst_addr-2.c.
    * gcc.target/powerpc/altivec_vld_vst_addr-1.c: New test.
    * gcc.target/powerpc/altivec_vld_vst_addr-2.c: Ditto.

From-SVN: r268102
This commit is contained in:
Kewen Lin 2019-01-20 05:58:47 +00:00
parent c72473e47a
commit a766ecb0d4
3 changed files with 108 additions and 82 deletions

View File

@ -1,3 +1,10 @@
2019-01-20 Kewen Lin <linkw@gcc.gnu.org>
* gcc.target/powerpc/altivec_vld_vst_addr.c: Remove, split into
altivec_vld_vst_addr-1.c and altivec_vld_vst_addr-2.c.
* gcc.target/powerpc/altivec_vld_vst_addr-1.c: New test.
* gcc.target/powerpc/altivec_vld_vst_addr-2.c: Ditto.
2019-01-18 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/37835

View File

@ -3,12 +3,12 @@
/* Test vec_ld and vec_st can support both scalar and vector
type address points, the list is:
- address of vector unsigned char/short/int/long long
- address of vector signed char/short/int/long long
- address of vector double/float
- address of unsigned char/short/int/long long
- address of signed char/short/int/long long
- address of double/float */
- address of unsigned char/short/int
- address of signed char/short/int
- address of float
- address of vector unsigned char/short/int
- address of vector signed char/short/int
- address of vector float */
#include <altivec.h>
/* Test vec_ld can allow scalar and vector type address. */
@ -30,12 +30,6 @@ test_vld_scalar_ui (const unsigned int *address)
return __builtin_vec_ld (0, address);
}
vector unsigned long long
test_vld_scalar_ul (const unsigned long long *address)
{
return __builtin_vec_ld (0, address);
}
vector signed char
test_vld_scalar_sc (const signed char *address)
{
@ -54,8 +48,8 @@ test_vld_scalar_si (const signed int *address)
return __builtin_vec_ld (0, address);
}
vector signed long long
test_vld_scalar_sl (const signed long long *address)
vector float
test_vld_scalar_f (const float *address)
{
return __builtin_vec_ld (0, address);
}
@ -78,12 +72,6 @@ test_vld_vector_ui (const vector unsigned int *address)
return __builtin_vec_ld (0, address);
}
vector unsigned long long
test_vld_vector_ul (const vector unsigned long long *address)
{
return __builtin_vec_ld (0, address);
}
vector signed char
test_vld_vector_sc (const vector signed char *address)
{
@ -102,36 +90,12 @@ test_vld_vector_si (const vector signed int *address)
return __builtin_vec_ld (0, address);
}
vector signed long long
test_vld_vector_sl (const vector signed long long *address)
{
return __builtin_vec_ld (0, address);
}
vector float
test_vld_scalar_f (const float *address)
{
return __builtin_vec_ld (0, address);
}
vector double
test_vld_scalar_d (const double *address)
{
return __builtin_vec_ld (0, address);
}
vector float
test_vld_vector_f (const vector float *address)
{
return __builtin_vec_ld (0, address);
}
vector double
test_vld_vector_d (const vector double *address)
{
return __builtin_vec_ld (0, address);
}
/* Test vec_st can allow scalar and vector type address. */
void
@ -152,12 +116,6 @@ test_vst_scalar_ui (vector unsigned int v, unsigned int *address)
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_ul (vector unsigned long long v, unsigned long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_sc (vector signed char v, signed char *address)
{
@ -177,7 +135,7 @@ test_vst_scalar_si (vector signed int v, signed int *address)
}
void
test_vst_scalar_sl (vector signed long long v, signed long long *address)
test_vst_scalar_f (vector float v, float *address)
{
__builtin_vec_st (v, 0, address);
}
@ -200,13 +158,6 @@ test_vst_vector_ui (vector unsigned int v, vector unsigned int *address)
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_ul (vector unsigned long long v,
vector unsigned long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_sc (vector signed char v, vector signed char *address)
{
@ -225,33 +176,9 @@ test_vst_vector_si (vector signed int v, vector signed int *address)
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_sl (vector signed long long v, vector signed long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_f (vector float v, float *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_f (vector float v, vector float *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_d (vector double v, double *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_d (vector double v, vector double *address)
{
__builtin_vec_st (v, 0, address);
}

View File

@ -0,0 +1,92 @@
/* { dg-require-effective-target powerpc_vsx_ok } */
/* { dg-options "-mvsx" } */
/* Note that vector long long and vector double type require vsx support. */
/* Test vec_ld and vec_st can support both scalar and vector
type address points, the list is:
- address of unsigned long long
- address of signed long long
- address of double
- address of vector unsigned long long
- address of vector signed long long
- address of vector double */
#include <altivec.h>
/* Test vec_ld can allow scalar and vector type address. */
vector unsigned long long
test_vld_scalar_ul (const unsigned long long *address)
{
return __builtin_vec_ld (0, address);
}
vector signed long long
test_vld_scalar_sl (const signed long long *address)
{
return __builtin_vec_ld (0, address);
}
vector double
test_vld_scalar_d (const double *address)
{
return __builtin_vec_ld (0, address);
}
vector unsigned long long
test_vld_vector_ul (const vector unsigned long long *address)
{
return __builtin_vec_ld (0, address);
}
vector signed long long
test_vld_vector_sl (const vector signed long long *address)
{
return __builtin_vec_ld (0, address);
}
vector double
test_vld_vector_d (const vector double *address)
{
return __builtin_vec_ld (0, address);
}
/* Test vec_st can allow scalar and vector type address. */
void
test_vst_scalar_ul (vector unsigned long long v, unsigned long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_sl (vector signed long long v, signed long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_d (vector double v, double *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_ul (vector unsigned long long v,
vector unsigned long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_sl (vector signed long long v, vector signed long long *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_d (vector double v, vector double *address)
{
__builtin_vec_st (v, 0, address);
}