@@ -3059,17 +3059,17 @@
VREPLACE_ELT_V2DF
[VEC_REPLACE_UN, vec_replace_unaligned, __builtin_vec_replace_un]
- vuc __builtin_vec_replace_un (vui, unsigned int, const int);
+ vuc __builtin_vec_replace_un (vuc, unsigned int, const int);
VREPLACE_UN_UV4SI
- vuc __builtin_vec_replace_un (vsi, signed int, const int);
+ vuc __builtin_vec_replace_un (vuc, signed int, const int);
VREPLACE_UN_V4SI
- vuc __builtin_vec_replace_un (vull, unsigned long long, const int);
+ vuc __builtin_vec_replace_un (vuc, unsigned long long, const int);
VREPLACE_UN_UV2DI
- vuc __builtin_vec_replace_un (vsll, signed long long, const int);
+ vuc __builtin_vec_replace_un (vuc, signed long long, const int);
VREPLACE_UN_V2DI
- vuc __builtin_vec_replace_un (vf, float, const int);
+ vuc __builtin_vec_replace_un (vuc, float, const int);
VREPLACE_UN_V4SF
- vuc __builtin_vec_replace_un (vd, double, const int);
+ vuc __builtin_vec_replace_un (vuc, double, const int);
VREPLACE_UN_V2DF
[VEC_REVB, vec_revb, __builtin_vec_revb]
@@ -20,6 +20,9 @@ main (int argc, char *argv [])
unsigned char ch;
unsigned int index;
+ vector unsigned char src_va_uchar;
+ vector unsigned char expected_vresult_uchar;
+
vector unsigned int vresult_uint;
vector unsigned int expected_vresult_uint;
vector unsigned int src_va_uint;
@@ -64,10 +67,10 @@ main (int argc, char *argv [])
vresult_uint = vec_replace_elt (src_va_uint, src_a_uint, 2);
- if (!vec_all_eq (vresult_uint, expected_vresult_uint)) {
+ if (!vec_all_eq (vresult_uint, expected_vresult_uint)) {
#if DEBUG
printf("ERROR, vec_replace_elt (src_vb_uint, src_va_uint, index)\n");
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
printf(" vresult_uint[%d] = %d, expected_vresult_uint[%d] = %d\n",
i, vresult_uint[i], i, expected_vresult_uint[i]);
#else
@@ -82,10 +85,10 @@ main (int argc, char *argv [])
vresult_int = vec_replace_elt (src_va_int, src_a_int, 1);
- if (!vec_all_eq (vresult_int, expected_vresult_int)) {
+ if (!vec_all_eq (vresult_int, expected_vresult_int)) {
#if DEBUG
printf("ERROR, vec_replace_elt (src_vb_int, src_va_int, index)\n");
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
printf(" vresult_int[%d] = %d, expected_vresult_int[%d] = %d\n",
i, vresult_int[i], i, expected_vresult_int[i]);
#else
@@ -100,10 +103,10 @@ main (int argc, char *argv [])
vresult_float = vec_replace_elt (src_va_float, src_a_float, 1);
- if (!vec_all_eq (vresult_float, expected_vresult_float)) {
+ if (!vec_all_eq (vresult_float, expected_vresult_float)) {
#if DEBUG
printf("ERROR, vec_replace_elt (src_vb_float, src_va_float, index)\n");
- for(i = 0; i < 4; i++)
+ for (i = 0; i < 4; i++)
printf(" vresult_float[%d] = %f, expected_vresult_float[%d] = %f\n",
i, vresult_float[i], i, expected_vresult_float[i]);
#else
@@ -122,7 +125,7 @@ main (int argc, char *argv [])
if (!vec_all_eq (vresult_ullint, expected_vresult_ullint)) {
#if DEBUG
printf("ERROR, vec_replace_elt (src_vb_ullint, src_va_ullint, index)\n");
- for(i = 0; i < 2; i++)
+ for (i = 0; i < 2; i++)
printf(" vresult_ullint[%d] = %d, expected_vresult_ullint[%d] = %d\n",
i, vresult_ullint[i], i, expected_vresult_ullint[i]);
#else
@@ -137,10 +140,10 @@ main (int argc, char *argv [])
vresult_llint = vec_replace_elt (src_va_llint, src_a_llint, 1);
- if (!vec_all_eq (vresult_llint, expected_vresult_llint)) {
+ if (!vec_all_eq (vresult_llint, expected_vresult_llint)) {
#if DEBUG
printf("ERROR, vec_replace_elt (src_vb_llint, src_va_llint, index)\n");
- for(i = 0; i < 2; i++)
+ for (i = 0; i < 2; i++)
printf(" vresult_llint[%d] = %d, expected_vresult_llint[%d] = %d\n",
i, vresult_llint[i], i, expected_vresult_llint[i]);
#else
@@ -155,10 +158,10 @@ main (int argc, char *argv [])
vresult_double = vec_replace_elt (src_va_double, src_a_double, 1);
- if (!vec_all_eq (vresult_double, expected_vresult_double)) {
+ if (!vec_all_eq (vresult_double, expected_vresult_double)) {
#if DEBUG
printf("ERROR, vec_replace_elt (src_vb_double, src_va_double, index)\n");
- for(i = 0; i < 2; i++)
+ for (i = 0; i < 2; i++)
printf(" vresult_double[%d] = %f, expected_vresult_double[%d] = %f\n",
i, vresult_double[i], i, expected_vresult_double[i]);
#else
@@ -169,60 +172,68 @@ main (int argc, char *argv [])
/* Vector replace 32-bit element, unaligned */
src_a_uint = 345;
- src_va_uint = (vector unsigned int) { 1, 2, 0, 0 };
- vresult_uint = (vector unsigned int) { 0, 0, 0, 0 };
+ src_va_uchar = (vector unsigned char) { 1, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 };
+ vresult_uchar = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 };
/* Byte index 7 will overwrite part of elements 2 and 3 */
- expected_vresult_uint = (vector unsigned int) { 1, 2, 345*256, 0 };
+ expected_vresult_uchar
+ = (vector unsigned char) { 1, 0, 0, 0, 2, 0, 0, 0,
+ 0, 0x59, 0x1, 0, 0, 0, 0, 0 };
- vresult_uchar = vec_replace_unaligned (src_va_uint, src_a_uint, 3);
- vresult_uint = (vector unsigned int) vresult_uchar;
+ vresult_uchar = vec_replace_unaligned (src_va_uchar, src_a_uint, 3);
- if (!vec_all_eq (vresult_uint, expected_vresult_uint)) {
+ if (!vec_all_eq (vresult_uchar, expected_vresult_uchar)) {
#if DEBUG
- printf("ERROR, vec_replace_unaligned (src_vb_uint, src_va_uint, index)\n");
- for(i = 0; i < 4; i++)
- printf(" vresult_uint[%d] = %d, expected_vresult_uint[%d] = %d\n",
- i, vresult_uint[i], i, expected_vresult_uint[i]);
+ printf("ERROR, vec_replace_unaligned (src_va_uchar, src_va_uint, index)\n");
+ for (i = 0; i < 16; i++)
+ printf(" vresult_uchar[%d] = 0x%x, expected_vresult_uint[%d] = 0%x\n",
+ i, vresult_uchar[i], i, expected_vresult_uchar[i]);
#else
abort();
#endif
}
src_a_int = 234;
- src_va_int = (vector int) { 1, 0, 3, 4 };
- vresult_int = (vector int) { 0, 0, 0, 0 };
+ src_va_uchar = (vector unsigned char) { 1, 0, 0, 0, 0, 0, 0, 0,
+ 3, 0, 0, 0, 4, 0, 0, 0 };
+ vresult_uchar = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 };
/* Byte index 7 will over write part of elements 1 and 2 */
- expected_vresult_int = (vector int) { 1, 234*256, 0, 4 };
-
- vresult_uchar = vec_replace_unaligned (src_va_int, src_a_int, 7);
- vresult_int = (vector signed int) vresult_uchar;
+ expected_vresult_uchar = (vector unsigned char) { 1, 0, 0, 0, 0, 0xea, 0, 0,
+ 0, 0, 0, 0, 4, 0, 0, 0 };
- if (!vec_all_eq (vresult_int, expected_vresult_int)) {
+ vresult_uchar = vec_replace_unaligned (src_va_uchar, src_a_int, 7);
+
+ if (!vec_all_eq (vresult_uchar, expected_vresult_uchar)) {
#if DEBUG
- printf("ERROR, vec_replace_unaligned (src_vb_int, src_va_int, index)\n");
- for(i = 0; i < 4; i++)
- printf(" vresult_int[%d] = %d, expected_vresult_int[%d] = %d\n",
- i, vresult_int[i], i, expected_vresult_int[i]);
+ printf("ERROR, vec_replace_unaligned (src_va_uchar, src_va_int, index)\n");
+ for (i = 0; i < 16; i++)
+ printf(" vresult_int[%d] = 0x%x, expected_vresult_int[%d] = 0x%x\n",
+ i, vresult_uchar[i], i, expected_vresult_uchar[i]);
#else
abort();
#endif
}
src_a_float = 34.0;
- src_va_float = (vector float) { 0.0, 10.0, 20.0, 30.0 };
- vresult_float = (vector float) { 0.0, 0.0, 0.0, 0.0 };
- expected_vresult_float = (vector float) { 0.0, 34.0, 20.0, 30.0 };
+ src_va_uchar = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 0x41, 0xa0,
+ 5, 6, 7, 8, 0x41, 0xf0, 0, 0};
+ vresult_uchar = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 };
+ expected_vresult_uchar
+ = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 8, 0x42,
+ 5, 6, 7, 8, 0x41, 0xf0, 0, 0 };
- vresult_uchar = vec_replace_unaligned (src_va_float, src_a_float, 8);
- vresult_float = (vector float) vresult_uchar;
+ vresult_uchar = vec_replace_unaligned (src_va_uchar, src_a_float, 8);
- if (!vec_all_eq (vresult_float, expected_vresult_float)) {
+ if (!vec_all_eq (vresult_uchar, expected_vresult_uchar)) {
#if DEBUG
- printf("ERROR, vec_replace_unaligned (src_vb_float, src_va_float, "
+ printf("ERROR, vec_replace_unaligned (src_va_uchar, src_va_float, "
"index)\n");
- for(i = 0; i < 4; i++)
- printf(" vresult_float[%d] = %f, expected_vresult_float[%d] = %f\n",
- i, vresult_float[i], i, expected_vresult_float[i]);
+ for (i = 0; i < 16; i++)
+ printf(" vresult_uchar[%d] = 0x%x, expected_vresult_uchar[%d] = 0x%x\n",
+ i, vresult_uchar[i], i, expected_vresult_uchar[i]);
#else
abort();
#endif
@@ -230,61 +241,67 @@ main (int argc, char *argv [])
/* Vector replace 64-bit element, unaligned */
src_a_ullint = 456;
- src_va_ullint = (vector unsigned long long int) { 0, 0x222 };
- vresult_ullint = (vector unsigned long long int) { 0, 0 };
- expected_vresult_ullint = (vector unsigned long long int) { 456*256,
- 0x200 };
+ src_va_uchar = (vector unsigned char) { 0, 0xc, 0x1, 0, 0, 0, 0, 0,
+ 0x22, 0x2, 0, 0, 0, 0, 0, 0 };
+ vresult_uchar = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 };
+ expected_vresult_uchar
+ = (vector unsigned char) { 0, 0xc, 0x1, 0, 0, 0xc8, 1, 0,
+ 0, 2, 0, 0, 0, 0, 0, 0 };
/* Byte index 7 will over write least significant byte of element 0 */
- vresult_uchar = vec_replace_unaligned (src_va_ullint, src_a_ullint, 7);
- vresult_ullint = (vector unsigned long long) vresult_uchar;
+ vresult_uchar = vec_replace_unaligned (src_va_uchar, src_a_ullint, 7);
- if (!vec_all_eq (vresult_ullint, expected_vresult_ullint)) {
+ if (!vec_all_eq (vresult_uchar, expected_vresult_uchar)) {
#if DEBUG
- printf("ERROR, vec_replace_unaligned (src_vb_ullint, src_va_ullint, "
+ printf("ERROR, vec_replace_unaligned (src_va_uchar, src_va_ullint, "
"index)\n");
- for(i = 0; i < 2; i++)
- printf(" vresult_ullint[%d] = %d, expected_vresult_ullint[%d] = %d\n",
- i, vresult_ullint[i], i, expected_vresult_ullint[i]);
+ for (i = 0; i < 15; i++)
+ printf(" vresult_uchar[%d] = 0x%x, expected_vresult_uchar[%d] = 0x%x\n",
+ i, vresult_uchar[i], i, expected_vresult_uchar[i]);
#else
abort();
#endif
}
src_a_llint = 678;
- src_va_llint = (vector long long int) { 0, 0x101 };
+ src_va_uchar = (vector unsigned char) { 0, 0xa6, 0x2, 0, 0, 0, 0, 0,
+ 0x0, 0x1, 0, 0, 0, 0, 0, 0 };
vresult_llint = (vector long long int) { 0, 0 };
/* Byte index 7 will over write least significant byte of element 0 */
- expected_vresult_llint = (vector long long int) { 678*256, 0x100 };
+ expected_vresult_uchar
+ = (vector unsigned char) { 0x0, 0xa6, 0x2, 0x0, 0x0, 0xa6, 0x2, 0x0,
+ 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
- vresult_uchar = vec_replace_unaligned (src_va_llint, src_a_llint, 7);
- vresult_llint = (vector signed long long) vresult_uchar;
+ vresult_uchar = vec_replace_unaligned (src_va_uchar, src_a_llint, 7);
- if (!vec_all_eq (vresult_llint, expected_vresult_llint)) {
+ if (!vec_all_eq (vresult_uchar, expected_vresult_uchar)) {
#if DEBUG
- printf("ERROR, vec_replace_unaligned (src_vb_llint, src_va_llint, "
+ printf("ERROR, vec_replace_unaligned (src_va_uchar, src_va_llint, "
"index)\n");
- for(i = 0; i < 2; i++)
- printf(" vresult_llint[%d] = %d, expected_vresult_llint[%d] = %d\n",
- i, vresult_llint[i], i, expected_vresult_llint[i]);
+ for (i = 0; i < 16; i++)
+ printf(" vresult_uchar[%d] = %d, expected_vresult_uchar[%d] = %d\n",
+ i, vresult_uchar[i], i, expected_vresult_uchar[i]);
#else
abort();
#endif
}
src_a_double = 678.0;
- src_va_double = (vector double) { 0.0, 50.0 };
+ // src_va_double = (vector double) { 0.0, 50.0 };
+ src_va_uchar = (vector unsigned char) { 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0 };
vresult_double = (vector double) { 0.0, 0.0 };
expected_vresult_double = (vector double) { 0.0, 678.0 };
- vresult_uchar = vec_replace_unaligned (src_va_double, src_a_double, 0);
+ vresult_uchar = vec_replace_unaligned (src_va_uchar, src_a_double, 0);
vresult_double = (vector double) vresult_uchar;
- if (!vec_all_eq (vresult_double, expected_vresult_double)) {
+ if (!vec_all_eq (vresult_double, expected_vresult_double)) {
#if DEBUG
- printf("ERROR, vec_replace_unaligned (src_vb_double, src_va_double, "
+ printf("ERROR, vec_replace_unaligned (src_va_uchar, src_va_double, "
"index)\n");
- for(i = 0; i < 2; i++)
+ for (i = 0; i < 2; i++)
printf(" vresult_double[%d] = %f, expected_vresult_double[%d] = %f\n",
i, vresult_double[i], i, expected_vresult_double[i]);
#else
@@ -295,7 +312,5 @@ main (int argc, char *argv [])
return 0;
}
-/* { dg-final { scan-assembler-times {\mvinsw\M} 6 } } */
-/* { dg-final { scan-assembler-times {\mvinsd\M} 6 } } */
-
-
+/* { dg-final { scan-assembler-times {\mvinsw\M} 8 } } */
+/* { dg-final { scan-assembler-times {\mvinsd\M} 4 } } */