1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
|
/* { dg-require-effective-target powerpc_altivec_ok } */
/* { dg-options "-maltivec" } */
/* Test vec_ld and vec_st can support both scalar and vector
type address points, the list is:
- 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. */
vector unsigned char
test_vld_scalar_uc (const unsigned char *address)
{
return __builtin_vec_ld (0, address);
}
vector unsigned short
test_vld_scalar_us (const unsigned short *address)
{
return __builtin_vec_ld (0, address);
}
vector unsigned int
test_vld_scalar_ui (const unsigned int *address)
{
return __builtin_vec_ld (0, address);
}
vector signed char
test_vld_scalar_sc (const signed char *address)
{
return __builtin_vec_ld (0, address);
}
vector signed short
test_vld_scalar_ss (const signed short *address)
{
return __builtin_vec_ld (0, address);
}
vector signed int
test_vld_scalar_si (const signed int *address)
{
return __builtin_vec_ld (0, address);
}
vector float
test_vld_scalar_f (const float *address)
{
return __builtin_vec_ld (0, address);
}
vector unsigned char
test_vld_vector_uc (const vector unsigned char *address)
{
return __builtin_vec_ld (0, address);
}
vector unsigned short
test_vld_vector_us (const vector unsigned short *address)
{
return __builtin_vec_ld (0, address);
}
vector unsigned int
test_vld_vector_ui (const vector unsigned int *address)
{
return __builtin_vec_ld (0, address);
}
vector signed char
test_vld_vector_sc (const vector signed char *address)
{
return __builtin_vec_ld (0, address);
}
vector signed short
test_vld_vector_ss (const vector signed short *address)
{
return __builtin_vec_ld (0, address);
}
vector signed int
test_vld_vector_si (const vector signed int *address)
{
return __builtin_vec_ld (0, address);
}
vector float
test_vld_vector_f (const vector float *address)
{
return __builtin_vec_ld (0, address);
}
/* Test vec_st can allow scalar and vector type address. */
void
test_vst_scalar_uc (vector unsigned char v, unsigned char *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_us (vector unsigned short v, unsigned short *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_ui (vector unsigned int v, unsigned int *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_sc (vector signed char v, signed char *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_ss (vector signed short v, signed short *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_scalar_si (vector signed int v, signed int *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_uc (vector unsigned char v, vector unsigned char *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_us (vector unsigned short v, vector unsigned short *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_ui (vector unsigned int v, vector unsigned int *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_sc (vector signed char v, vector signed char *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_ss (vector signed short v, vector signed short *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_si (vector signed int v, vector signed int *address)
{
__builtin_vec_st (v, 0, address);
}
void
test_vst_vector_f (vector float v, vector float *address)
{
__builtin_vec_st (v, 0, address);
}
|