Commit a766ecb0 by Kewen Lin

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
parent c72473e4
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> 2019-01-18 Dominique d'Humieres <dominiq@gcc.gnu.org>
PR fortran/37835 PR fortran/37835
......
...@@ -3,12 +3,12 @@ ...@@ -3,12 +3,12 @@
/* Test vec_ld and vec_st can support both scalar and vector /* Test vec_ld and vec_st can support both scalar and vector
type address points, the list is: type address points, the list is:
- address of vector unsigned char/short/int/long long - address of unsigned char/short/int
- address of vector signed char/short/int/long long - address of signed char/short/int
- address of vector double/float - address of float
- address of unsigned char/short/int/long long - address of vector unsigned char/short/int
- address of signed char/short/int/long long - address of vector signed char/short/int
- address of double/float */ - address of vector float */
#include <altivec.h> #include <altivec.h>
/* Test vec_ld can allow scalar and vector type address. */ /* Test vec_ld can allow scalar and vector type address. */
...@@ -30,12 +30,6 @@ test_vld_scalar_ui (const unsigned int *address) ...@@ -30,12 +30,6 @@ test_vld_scalar_ui (const unsigned int *address)
return __builtin_vec_ld (0, 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 vector signed char
test_vld_scalar_sc (const signed char *address) test_vld_scalar_sc (const signed char *address)
{ {
...@@ -54,8 +48,8 @@ test_vld_scalar_si (const signed int *address) ...@@ -54,8 +48,8 @@ test_vld_scalar_si (const signed int *address)
return __builtin_vec_ld (0, address); return __builtin_vec_ld (0, address);
} }
vector signed long long vector float
test_vld_scalar_sl (const signed long long *address) test_vld_scalar_f (const float *address)
{ {
return __builtin_vec_ld (0, address); return __builtin_vec_ld (0, address);
} }
...@@ -78,12 +72,6 @@ test_vld_vector_ui (const vector unsigned int *address) ...@@ -78,12 +72,6 @@ test_vld_vector_ui (const vector unsigned int *address)
return __builtin_vec_ld (0, 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 vector signed char
test_vld_vector_sc (const vector signed char *address) test_vld_vector_sc (const vector signed char *address)
{ {
...@@ -102,36 +90,12 @@ test_vld_vector_si (const vector signed int *address) ...@@ -102,36 +90,12 @@ test_vld_vector_si (const vector signed int *address)
return __builtin_vec_ld (0, 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 vector float
test_vld_vector_f (const vector float *address) test_vld_vector_f (const vector float *address)
{ {
return __builtin_vec_ld (0, 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. */ /* Test vec_st can allow scalar and vector type address. */
void void
...@@ -153,12 +117,6 @@ test_vst_scalar_ui (vector unsigned int v, unsigned int *address) ...@@ -153,12 +117,6 @@ test_vst_scalar_ui (vector unsigned int v, unsigned int *address)
} }
void 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) test_vst_scalar_sc (vector signed char v, signed char *address)
{ {
__builtin_vec_st (v, 0, address); __builtin_vec_st (v, 0, address);
...@@ -177,7 +135,7 @@ test_vst_scalar_si (vector signed int v, signed int *address) ...@@ -177,7 +135,7 @@ test_vst_scalar_si (vector signed int v, signed int *address)
} }
void 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); __builtin_vec_st (v, 0, address);
} }
...@@ -201,13 +159,6 @@ test_vst_vector_ui (vector unsigned int v, vector unsigned int *address) ...@@ -201,13 +159,6 @@ test_vst_vector_ui (vector unsigned int v, vector unsigned int *address)
} }
void 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) test_vst_vector_sc (vector signed char v, vector signed char *address)
{ {
__builtin_vec_st (v, 0, address); __builtin_vec_st (v, 0, address);
...@@ -226,32 +177,8 @@ test_vst_vector_si (vector signed int v, vector signed int *address) ...@@ -226,32 +177,8 @@ test_vst_vector_si (vector signed int v, vector signed int *address)
} }
void 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) test_vst_vector_f (vector float v, vector float *address)
{ {
__builtin_vec_st (v, 0, 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);
}
/* { 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);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment