Commit b9e4e5d1 by Ziemowit Laski Committed by Ziemowit Laski

PR c++/14425, c++/14426

[gcc/ChangeLog]
2004-03-04  Ziemowit Laski  <zlaski@apple.com>

        PR c++/14425, c++/14426
        * config/rs6000/altivec.h (vec_splat_s8, vec_splat_s16,
        vec_splat_s32, vec_splat_u8, vec_splat_u16, vec_splat_u32):
        Change C++ definitions to accept a 'const int' argument;
        the prototypes already do.
        * config/rs6000/rs6000.c (rs6000_common_init_builtins):
        Rename v4si_ftype_char, v8hi_ftype_char, v16qi_ftype_char,
        v4sf_ftype_v4si_char, v4si_ftype_v4sf_char, v4si_ftype_v4si_char,
        v8hi_ftype_v8hi_char, v16qi_ftype_v16qi_char,
        v16qi_ftype_v16qi_v16qi_char, v8hi_ftype_v8hi_v8hi_char,
        v4si_ftype_v4si_v4si_char and v4sf_ftype_v4sf_v4sf_char to
        end in ..._int; change them to accept an int instead of a char
        as the last parameter.

[gcc/testsuite/ChangeLog]
2004-03-04  Ziemowit Laski  <zlaski@apple.com>

        PR c++/14425, c++/14426
        * g++.dg/ext/altivec-4.C: New test.
        * g++.dg/ext/altivec-5.C: New test.

From-SVN: r78940
parent 9fc444cc
2004-03-04 Ziemowit Laski <zlaski@apple.com>
PR c++/14425, c++/14426
* config/rs6000/altivec.h (vec_splat_s8, vec_splat_s16,
vec_splat_s32, vec_splat_u8, vec_splat_u16, vec_splat_u32):
Change C++ definitions to accept a 'const int' argument;
the prototypes already do.
* config/rs6000/rs6000.c (rs6000_common_init_builtins):
Rename v4si_ftype_char, v8hi_ftype_char, v16qi_ftype_char,
v4sf_ftype_v4si_char, v4si_ftype_v4sf_char, v4si_ftype_v4si_char,
v8hi_ftype_v8hi_char, v16qi_ftype_v16qi_char,
v16qi_ftype_v16qi_v16qi_char, v8hi_ftype_v8hi_v8hi_char,
v4si_ftype_v4si_v4si_char and v4sf_ftype_v4sf_v4sf_char to
end in ..._int; change them to accept an int instead of a char
as the last parameter.
2004-03-04 Phil Edwards <phil@codesourcery.com> 2004-03-04 Phil Edwards <phil@codesourcery.com>
* genmultilib: Change '=' to '-' when translating option names * genmultilib: Change '=' to '-' when translating option names
......
...@@ -4613,7 +4613,7 @@ vec_vspltb (vector unsigned char a1, const int a2) ...@@ -4613,7 +4613,7 @@ vec_vspltb (vector unsigned char a1, const int a2)
/* vec_splat_s8 */ /* vec_splat_s8 */
inline vector signed char inline vector signed char
vec_splat_s8 (const signed char a1) vec_splat_s8 (const int a1)
{ {
return (vector signed char) __builtin_altivec_vspltisb (a1); return (vector signed char) __builtin_altivec_vspltisb (a1);
} }
...@@ -4621,7 +4621,7 @@ vec_splat_s8 (const signed char a1) ...@@ -4621,7 +4621,7 @@ vec_splat_s8 (const signed char a1)
/* vec_splat_s16 */ /* vec_splat_s16 */
inline vector signed short inline vector signed short
vec_splat_s16 (const signed char a1) vec_splat_s16 (const int a1)
{ {
return (vector signed short) __builtin_altivec_vspltish (a1); return (vector signed short) __builtin_altivec_vspltish (a1);
} }
...@@ -4629,7 +4629,7 @@ vec_splat_s16 (const signed char a1) ...@@ -4629,7 +4629,7 @@ vec_splat_s16 (const signed char a1)
/* vec_splat_s32 */ /* vec_splat_s32 */
inline vector signed int inline vector signed int
vec_splat_s32 (const signed char a1) vec_splat_s32 (const int a1)
{ {
return (vector signed int) __builtin_altivec_vspltisw (a1); return (vector signed int) __builtin_altivec_vspltisw (a1);
} }
...@@ -4637,7 +4637,7 @@ vec_splat_s32 (const signed char a1) ...@@ -4637,7 +4637,7 @@ vec_splat_s32 (const signed char a1)
/* vec_splat_u8 */ /* vec_splat_u8 */
inline vector unsigned char inline vector unsigned char
vec_splat_u8 (const signed char a1) vec_splat_u8 (const int a1)
{ {
return (vector unsigned char) __builtin_altivec_vspltisb (a1); return (vector unsigned char) __builtin_altivec_vspltisb (a1);
} }
...@@ -4645,7 +4645,7 @@ vec_splat_u8 (const signed char a1) ...@@ -4645,7 +4645,7 @@ vec_splat_u8 (const signed char a1)
/* vec_splat_u16 */ /* vec_splat_u16 */
inline vector unsigned short inline vector unsigned short
vec_splat_u16 (const signed char a1) vec_splat_u16 (const int a1)
{ {
return (vector unsigned short) __builtin_altivec_vspltish (a1); return (vector unsigned short) __builtin_altivec_vspltish (a1);
} }
...@@ -4653,7 +4653,7 @@ vec_splat_u16 (const signed char a1) ...@@ -4653,7 +4653,7 @@ vec_splat_u16 (const signed char a1)
/* vec_splat_u32 */ /* vec_splat_u32 */
inline vector unsigned int inline vector unsigned int
vec_splat_u32 (const signed char a1) vec_splat_u32 (const int a1)
{ {
return (vector unsigned int) __builtin_altivec_vspltisw (a1); return (vector unsigned int) __builtin_altivec_vspltisw (a1);
} }
......
...@@ -7015,12 +7015,12 @@ rs6000_common_init_builtins (void) ...@@ -7015,12 +7015,12 @@ rs6000_common_init_builtins (void)
= build_function_type_list (V16QI_type_node, = build_function_type_list (V16QI_type_node,
V16QI_type_node, V16QI_type_node, V16QI_type_node, V16QI_type_node,
V16QI_type_node, NULL_TREE); V16QI_type_node, NULL_TREE);
tree v4si_ftype_char tree v4si_ftype_int
= build_function_type_list (V4SI_type_node, char_type_node, NULL_TREE); = build_function_type_list (V4SI_type_node, integer_type_node, NULL_TREE);
tree v8hi_ftype_char tree v8hi_ftype_int
= build_function_type_list (V8HI_type_node, char_type_node, NULL_TREE); = build_function_type_list (V8HI_type_node, integer_type_node, NULL_TREE);
tree v16qi_ftype_char tree v16qi_ftype_int
= build_function_type_list (V16QI_type_node, char_type_node, NULL_TREE); = build_function_type_list (V16QI_type_node, integer_type_node, NULL_TREE);
tree v8hi_ftype_v16qi tree v8hi_ftype_v16qi
= build_function_type_list (V8HI_type_node, V16QI_type_node, NULL_TREE); = build_function_type_list (V8HI_type_node, V16QI_type_node, NULL_TREE);
tree v4sf_ftype_v4sf tree v4sf_ftype_v4sf
...@@ -7078,37 +7078,37 @@ rs6000_common_init_builtins (void) ...@@ -7078,37 +7078,37 @@ rs6000_common_init_builtins (void)
tree v4si_ftype_v4si_v4si tree v4si_ftype_v4si_v4si
= build_function_type_list (V4SI_type_node, = build_function_type_list (V4SI_type_node,
V4SI_type_node, V4SI_type_node, NULL_TREE); V4SI_type_node, V4SI_type_node, NULL_TREE);
tree v4sf_ftype_v4si_char tree v4sf_ftype_v4si_int
= build_function_type_list (V4SF_type_node, = build_function_type_list (V4SF_type_node,
V4SI_type_node, char_type_node, NULL_TREE); V4SI_type_node, integer_type_node, NULL_TREE);
tree v4si_ftype_v4sf_char tree v4si_ftype_v4sf_int
= build_function_type_list (V4SI_type_node, = build_function_type_list (V4SI_type_node,
V4SF_type_node, char_type_node, NULL_TREE); V4SF_type_node, integer_type_node, NULL_TREE);
tree v4si_ftype_v4si_char tree v4si_ftype_v4si_int
= build_function_type_list (V4SI_type_node, = build_function_type_list (V4SI_type_node,
V4SI_type_node, char_type_node, NULL_TREE); V4SI_type_node, integer_type_node, NULL_TREE);
tree v8hi_ftype_v8hi_char tree v8hi_ftype_v8hi_int
= build_function_type_list (V8HI_type_node, = build_function_type_list (V8HI_type_node,
V8HI_type_node, char_type_node, NULL_TREE); V8HI_type_node, integer_type_node, NULL_TREE);
tree v16qi_ftype_v16qi_char tree v16qi_ftype_v16qi_int
= build_function_type_list (V16QI_type_node, = build_function_type_list (V16QI_type_node,
V16QI_type_node, char_type_node, NULL_TREE); V16QI_type_node, integer_type_node, NULL_TREE);
tree v16qi_ftype_v16qi_v16qi_char tree v16qi_ftype_v16qi_v16qi_int
= build_function_type_list (V16QI_type_node, = build_function_type_list (V16QI_type_node,
V16QI_type_node, V16QI_type_node, V16QI_type_node, V16QI_type_node,
char_type_node, NULL_TREE); integer_type_node, NULL_TREE);
tree v8hi_ftype_v8hi_v8hi_char tree v8hi_ftype_v8hi_v8hi_int
= build_function_type_list (V8HI_type_node, = build_function_type_list (V8HI_type_node,
V8HI_type_node, V8HI_type_node, V8HI_type_node, V8HI_type_node,
char_type_node, NULL_TREE); integer_type_node, NULL_TREE);
tree v4si_ftype_v4si_v4si_char tree v4si_ftype_v4si_v4si_int
= build_function_type_list (V4SI_type_node, = build_function_type_list (V4SI_type_node,
V4SI_type_node, V4SI_type_node, V4SI_type_node, V4SI_type_node,
char_type_node, NULL_TREE); integer_type_node, NULL_TREE);
tree v4sf_ftype_v4sf_v4sf_char tree v4sf_ftype_v4sf_v4sf_int
= build_function_type_list (V4SF_type_node, = build_function_type_list (V4SF_type_node,
V4SF_type_node, V4SF_type_node, V4SF_type_node, V4SF_type_node,
char_type_node, NULL_TREE); integer_type_node, NULL_TREE);
tree v4sf_ftype_v4sf_v4sf tree v4sf_ftype_v4sf_v4sf
= build_function_type_list (V4SF_type_node, = build_function_type_list (V4SF_type_node,
V4SF_type_node, V4SF_type_node, NULL_TREE); V4SF_type_node, V4SF_type_node, NULL_TREE);
...@@ -7251,22 +7251,22 @@ rs6000_common_init_builtins (void) ...@@ -7251,22 +7251,22 @@ rs6000_common_init_builtins (void)
/* vchar, vchar, vchar, 4 bit literal. */ /* vchar, vchar, vchar, 4 bit literal. */
else if (mode0 == V16QImode && mode1 == mode0 && mode2 == mode0 else if (mode0 == V16QImode && mode1 == mode0 && mode2 == mode0
&& mode3 == QImode) && mode3 == QImode)
type = v16qi_ftype_v16qi_v16qi_char; type = v16qi_ftype_v16qi_v16qi_int;
/* vshort, vshort, vshort, 4 bit literal. */ /* vshort, vshort, vshort, 4 bit literal. */
else if (mode0 == V8HImode && mode1 == mode0 && mode2 == mode0 else if (mode0 == V8HImode && mode1 == mode0 && mode2 == mode0
&& mode3 == QImode) && mode3 == QImode)
type = v8hi_ftype_v8hi_v8hi_char; type = v8hi_ftype_v8hi_v8hi_int;
/* vint, vint, vint, 4 bit literal. */ /* vint, vint, vint, 4 bit literal. */
else if (mode0 == V4SImode && mode1 == mode0 && mode2 == mode0 else if (mode0 == V4SImode && mode1 == mode0 && mode2 == mode0
&& mode3 == QImode) && mode3 == QImode)
type = v4si_ftype_v4si_v4si_char; type = v4si_ftype_v4si_v4si_int;
/* vfloat, vfloat, vfloat, 4 bit literal. */ /* vfloat, vfloat, vfloat, 4 bit literal. */
else if (mode0 == V4SFmode && mode1 == mode0 && mode2 == mode0 else if (mode0 == V4SFmode && mode1 == mode0 && mode2 == mode0
&& mode3 == QImode) && mode3 == QImode)
type = v4sf_ftype_v4sf_v4sf_char; type = v4sf_ftype_v4sf_v4sf_int;
else else
abort (); abort ();
...@@ -7355,23 +7355,23 @@ rs6000_common_init_builtins (void) ...@@ -7355,23 +7355,23 @@ rs6000_common_init_builtins (void)
/* vint, vint, 5 bit literal. */ /* vint, vint, 5 bit literal. */
else if (mode0 == V4SImode && mode1 == V4SImode && mode2 == QImode) else if (mode0 == V4SImode && mode1 == V4SImode && mode2 == QImode)
type = v4si_ftype_v4si_char; type = v4si_ftype_v4si_int;
/* vshort, vshort, 5 bit literal. */ /* vshort, vshort, 5 bit literal. */
else if (mode0 == V8HImode && mode1 == V8HImode && mode2 == QImode) else if (mode0 == V8HImode && mode1 == V8HImode && mode2 == QImode)
type = v8hi_ftype_v8hi_char; type = v8hi_ftype_v8hi_int;
/* vchar, vchar, 5 bit literal. */ /* vchar, vchar, 5 bit literal. */
else if (mode0 == V16QImode && mode1 == V16QImode && mode2 == QImode) else if (mode0 == V16QImode && mode1 == V16QImode && mode2 == QImode)
type = v16qi_ftype_v16qi_char; type = v16qi_ftype_v16qi_int;
/* vfloat, vint, 5 bit literal. */ /* vfloat, vint, 5 bit literal. */
else if (mode0 == V4SFmode && mode1 == V4SImode && mode2 == QImode) else if (mode0 == V4SFmode && mode1 == V4SImode && mode2 == QImode)
type = v4sf_ftype_v4si_char; type = v4sf_ftype_v4si_int;
/* vint, vfloat, 5 bit literal. */ /* vint, vfloat, 5 bit literal. */
else if (mode0 == V4SImode && mode1 == V4SFmode && mode2 == QImode) else if (mode0 == V4SImode && mode1 == V4SFmode && mode2 == QImode)
type = v4si_ftype_v4sf_char; type = v4si_ftype_v4sf_int;
else if (mode0 == V2SImode && mode1 == SImode && mode2 == SImode) else if (mode0 == V2SImode && mode1 == SImode && mode2 == SImode)
type = v2si_ftype_int_int; type = v2si_ftype_int_int;
...@@ -7424,11 +7424,11 @@ rs6000_common_init_builtins (void) ...@@ -7424,11 +7424,11 @@ rs6000_common_init_builtins (void)
mode1 = insn_data[d->icode].operand[1].mode; mode1 = insn_data[d->icode].operand[1].mode;
if (mode0 == V4SImode && mode1 == QImode) if (mode0 == V4SImode && mode1 == QImode)
type = v4si_ftype_char; type = v4si_ftype_int;
else if (mode0 == V8HImode && mode1 == QImode) else if (mode0 == V8HImode && mode1 == QImode)
type = v8hi_ftype_char; type = v8hi_ftype_int;
else if (mode0 == V16QImode && mode1 == QImode) else if (mode0 == V16QImode && mode1 == QImode)
type = v16qi_ftype_char; type = v16qi_ftype_int;
else if (mode0 == V4SFmode && mode1 == V4SFmode) else if (mode0 == V4SFmode && mode1 == V4SFmode)
type = v4sf_ftype_v4sf; type = v4sf_ftype_v4sf;
else if (mode0 == V8HImode && mode1 == V16QImode) else if (mode0 == V8HImode && mode1 == V16QImode)
......
2004-03-04 Ziemowit Laski <zlaski@apple.com>
PR c++/14425, c++/14426
* g++.dg/ext/altivec-4.C: New test.
* g++.dg/ext/altivec-5.C: New test.
2004-03-04 Geoffrey Keating <geoffk@apple.com> 2004-03-04 Geoffrey Keating <geoffk@apple.com>
* g++.old-deja/g++.other/linkage1.C: Expect errors about * g++.old-deja/g++.other/linkage1.C: Expect errors about
......
/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
/* PR c++/14425 */
#include <altivec.h>
vector unsigned int splat0(vector unsigned int x)
{
return vec_splat(x, 0);
}
/* { dg-do compile { target powerpc*-*-* } } */
/* { dg-options "-maltivec" } */
/* PR c++/14426 */
#include <altivec.h>
vector unsigned int splat0u()
{
return vec_splat_u32(0);
}
vector int splat0s()
{
return vec_splat_s32(0);
}
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