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:
parent
c72473e47a
commit
a766ecb0d4
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue