diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2002-02-05 02:18:55 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2002-02-05 02:18:55 +0000 |
commit | 3deb275873f7810c2e98fbea6b4f05ddddf846ef (patch) | |
tree | e2fb665c5c722319f0c00bb02bcfbb4e7e9c3eb4 | |
parent | d7799ba140b2f5e05d5b62855f73f99bb7d5911c (diff) | |
download | gcc-3deb275873f7810c2e98fbea6b4f05ddddf846ef.zip gcc-3deb275873f7810c2e98fbea6b4f05ddddf846ef.tar.gz gcc-3deb275873f7810c2e98fbea6b4f05ddddf846ef.tar.bz2 |
rs6000.c (altivec_init_builtins): Fix typo building void typed builtins.
2002-02-05 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000.c (altivec_init_builtins): Fix typo
building void typed builtins.
* config/rs6000/altivec.h (vec_ld*): Fix typos.
(vec_step): Implement for C++.
From-SVN: r49510
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/rs6000/altivec.h | 151 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 9 |
3 files changed, 155 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 35e658c..509b220 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-02-05 Aldy Hernandez <aldyh@redhat.com> + + * config/rs6000/rs6000.c (altivec_init_builtins): Fix typo + building void typed builtins. + + * config/rs6000/altivec.h (vec_ld*): Fix typos. + (vec_step): Implement for C++. + Mon Feb 4 19:23:19 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> * final.c (final_scan_insn): Add case for NOTE_INSN_LOOP_END_TOP_COND. diff --git a/gcc/config/rs6000/altivec.h b/gcc/config/rs6000/altivec.h index 4e8cdf2..a1c4cb5 100644 --- a/gcc/config/rs6000/altivec.h +++ b/gcc/config/rs6000/altivec.h @@ -720,82 +720,124 @@ vec_ld (int a1, vector float *a2) return (vector float) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector float +vec_ld (int a1, float *a2) +{ + return (vector float) __builtin_altivec_lvx (a1, (void *) a2); +} + inline vector signed int vec_ld (int a1, vector signed int *a2) { return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector signed int +vec_ld (int a1, signed int *a2) +{ + return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2); +} + inline vector unsigned int vec_ld (int a1, vector unsigned int *a2) { return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector unsigned int +vec_ld (int a1, unsigned int *a2) +{ + return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2); +} + inline vector signed short vec_ld (int a1, vector signed short *a2) { return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector signed short +vec_ld (int a1, signed short *a2) +{ + return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2); +} + inline vector unsigned short vec_ld (int a1, vector unsigned short *a2) { return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector unsigned short +vec_ld (int a1, unsigned short *a2) +{ + return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2); +} + inline vector signed char vec_ld (int a1, vector signed char *a2) { return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector signed char +vec_ld (int a1, signed char *a2) +{ + return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2); +} + inline vector unsigned char vec_ld (int a1, vector unsigned char *a2) { return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); } +inline vector unsigned char +vec_ld (int a1, unsigned char *a2) +{ + return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2); +} + /* vec_lde */ inline vector signed char -vec_lde (int a1, vector signed char *a2) +vec_lde (int a1, signed char *a2) { return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2); } inline vector unsigned char -vec_lde (int a1, vector unsigned char *a2) +vec_lde (int a1, unsigned char *a2) { return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2); } inline vector signed short -vec_lde (int a1, vector signed short *a2) +vec_lde (int a1, signed short *a2) { return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2); } inline vector unsigned short -vec_lde (int a1, vector unsigned short *a2) +vec_lde (int a1, unsigned short *a2) { return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2); } inline vector float -vec_lde (int a1, vector float *a2) +vec_lde (int a1, float *a2) { return (vector float) __builtin_altivec_lvewx (a1, (void *) a2); } inline vector signed int -vec_lde (int a1, vector signed int *a2) +vec_lde (int a1, signed int *a2) { return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2); } inline vector unsigned int -vec_lde (int a1, vector unsigned int *a2) +vec_lde (int a1, unsigned int *a2) { return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2); } @@ -808,42 +850,84 @@ vec_ldl (int a1, vector float *a2) return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector float +vec_ldl (int a1, float *a2) +{ + return (vector float) __builtin_altivec_lvxl (a1, (void *) a2); +} + inline vector signed int vec_ldl (int a1, vector signed int *a2) { return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector signed int +vec_ldl (int a1, signed int *a2) +{ + return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2); +} + inline vector unsigned int vec_ldl (int a1, vector unsigned int *a2) { return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector unsigned int +vec_ldl (int a1, unsigned int *a2) +{ + return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2); +} + inline vector signed short vec_ldl (int a1, vector signed short *a2) { return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector signed short +vec_ldl (int a1, signed short *a2) +{ + return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2); +} + inline vector unsigned short vec_ldl (int a1, vector unsigned short *a2) { return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector unsigned short +vec_ldl (int a1, unsigned short *a2) +{ + return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2); +} + inline vector signed char vec_ldl (int a1, vector signed char *a2) { return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector signed char +vec_ldl (int a1, signed char *a2) +{ + return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2); +} + inline vector unsigned char vec_ldl (int a1, vector unsigned char *a2) { return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); } +inline vector unsigned char +vec_ldl (int a1, unsigned char *a2) +{ + return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2); +} + /* vec_loge */ inline vector float @@ -3897,6 +3981,59 @@ vec_any_out (vector float a1, vector float a2) { return __builtin_altivec_vcmpbfp_p (__CR6_EQ_REV, a1, a2); } + +/* vec_step */ + +template<typename _Tp> +struct vec_step_help +{ + // All proper vector types will specialize elem. +}; + +template<> +struct vec_step_help<vector signed short> +{ + static const int elem = 8; +}; + +template<> +struct vec_step_help<vector unsigned short> +{ + static const int elem = 8; +}; + +template<> +struct vec_step_help<vector signed int> +{ + static const int elem = 4; +}; + +template<> +struct vec_step_help<vector unsigned int> +{ + static const int elem = 4; +}; + +template<> +struct vec_step_help<vector unsigned char> +{ + static const int elem = 16; +}; + +template<> +struct vec_step_help<vector signed char> +{ + static const int elem = 16; +}; + +template<> +struct vec_step_help<vector float> +{ + static const int elem = 4; +}; + +#define vec_step(t) vec_step_help<t>::elem + #else /* not C++ */ /* "... and so I think no man in a century will suffer as greatly as diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 7a33dc2..0143981 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -1802,6 +1802,7 @@ rs6000_legitimize_reload_address (x, mode, opnum, type, ind_levels, win) *win = 1; return x; } + #if TARGET_MACHO if (DEFAULT_ABI == ABI_DARWIN && flag_pic && GET_CODE (x) == LO_SUM @@ -4161,15 +4162,11 @@ altivec_init_builtins (void) /* void foo (void). */ tree void_ftype_void - = build_function_type (void_type_node, - tree_cons (NULL_TREE, void_type_node, - endlink)); + = build_function_type (void_type_node, void_list_node); /* vshort foo (void). */ tree v8hi_ftype_void - = build_function_type (V8HI_type_node, - tree_cons (NULL_TREE, void_type_node, - endlink)); + = build_function_type (V8HI_type_node, void_list_node); tree v4si_ftype_v4si_v4si = build_function_type (V4SI_type_node, |