diff options
author | David S. Miller <davem@davemloft.net> | 2011-09-21 08:13:36 +0000 |
---|---|---|
committer | David S. Miller <davem@gcc.gnu.org> | 2011-09-21 01:13:36 -0700 |
commit | 3653988e4640f61223336d5e12c178329d659a13 (patch) | |
tree | fe8fb29a38a3872391a9a132595f7773b919393b | |
parent | 0c51472758bef54b179181f083cb2cb4fa937ca3 (diff) | |
download | gcc-3653988e4640f61223336d5e12c178329d659a13.zip gcc-3653988e4640f61223336d5e12c178329d659a13.tar.gz gcc-3653988e4640f61223336d5e12c178329d659a13.tar.bz2 |
sparc.c (def_builtin): Change from macro into function.
* config/sparc/sparc.c (def_builtin): Change from macro into function.
(def_builtin_const): New.
(sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins
other than alignaddr and falignaddr.
From-SVN: r179035
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 118 |
2 files changed, 73 insertions, 52 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index afec0a4..d1265fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2011-09-21 David S. Miller <davem@davemloft.net> + + * config/sparc/sparc.c (def_builtin): Change from macro into function. + (def_builtin_const): New. + (sparc_vis_init_builtins): Use def_builtin_const for all VIS builtins + other than alignaddr and falignaddr. + 2011-09-21 Tom de Vries <tom@codesourcery.com> * final.c (final): Handle if JUMP_LABEL is not LABEL_P. diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 68b5961..7533307 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -9100,9 +9100,21 @@ sparc_init_libfuncs (void) } } -#define def_builtin(NAME, CODE, TYPE) \ - add_builtin_function((NAME), (TYPE), (CODE), BUILT_IN_MD, NULL, \ - NULL_TREE) +static tree def_builtin(const char *name, int code, tree type) +{ + return add_builtin_function(name, type, code, BUILT_IN_MD, NULL, + NULL_TREE); +} + +static tree def_builtin_const(const char *name, int code, tree type) +{ + tree t = def_builtin(name, code, type); + + if (t) + TREE_READONLY (t) = 1; + + return t; +} /* Implement the TARGET_INIT_BUILTINS target hook. Create builtin functions for special SPARC instructions. */ @@ -9154,30 +9166,32 @@ sparc_vis_init_builtins (void) ptr_type_node, 0); /* Packing and expanding vectors. */ - def_builtin ("__builtin_vis_fpack16", CODE_FOR_fpack16_vis, v4qi_ftype_v4hi); - def_builtin ("__builtin_vis_fpack32", CODE_FOR_fpack32_vis, - v8qi_ftype_v2si_v8qi); - def_builtin ("__builtin_vis_fpackfix", CODE_FOR_fpackfix_vis, - v2hi_ftype_v2si); - def_builtin ("__builtin_vis_fexpand", CODE_FOR_fexpand_vis, v4hi_ftype_v4qi); - def_builtin ("__builtin_vis_fpmerge", CODE_FOR_fpmerge_vis, - v8qi_ftype_v4qi_v4qi); + def_builtin_const ("__builtin_vis_fpack16", CODE_FOR_fpack16_vis, + v4qi_ftype_v4hi); + def_builtin_const ("__builtin_vis_fpack32", CODE_FOR_fpack32_vis, + v8qi_ftype_v2si_v8qi); + def_builtin_const ("__builtin_vis_fpackfix", CODE_FOR_fpackfix_vis, + v2hi_ftype_v2si); + def_builtin_const ("__builtin_vis_fexpand", CODE_FOR_fexpand_vis, + v4hi_ftype_v4qi); + def_builtin_const ("__builtin_vis_fpmerge", CODE_FOR_fpmerge_vis, + v8qi_ftype_v4qi_v4qi); /* Multiplications. */ - def_builtin ("__builtin_vis_fmul8x16", CODE_FOR_fmul8x16_vis, - v4hi_ftype_v4qi_v4hi); - def_builtin ("__builtin_vis_fmul8x16au", CODE_FOR_fmul8x16au_vis, - v4hi_ftype_v4qi_v2hi); - def_builtin ("__builtin_vis_fmul8x16al", CODE_FOR_fmul8x16al_vis, - v4hi_ftype_v4qi_v2hi); - def_builtin ("__builtin_vis_fmul8sux16", CODE_FOR_fmul8sux16_vis, - v4hi_ftype_v8qi_v4hi); - def_builtin ("__builtin_vis_fmul8ulx16", CODE_FOR_fmul8ulx16_vis, - v4hi_ftype_v8qi_v4hi); - def_builtin ("__builtin_vis_fmuld8sux16", CODE_FOR_fmuld8sux16_vis, - v2si_ftype_v4qi_v2hi); - def_builtin ("__builtin_vis_fmuld8ulx16", CODE_FOR_fmuld8ulx16_vis, - v2si_ftype_v4qi_v2hi); + def_builtin_const ("__builtin_vis_fmul8x16", CODE_FOR_fmul8x16_vis, + v4hi_ftype_v4qi_v4hi); + def_builtin_const ("__builtin_vis_fmul8x16au", CODE_FOR_fmul8x16au_vis, + v4hi_ftype_v4qi_v2hi); + def_builtin_const ("__builtin_vis_fmul8x16al", CODE_FOR_fmul8x16al_vis, + v4hi_ftype_v4qi_v2hi); + def_builtin_const ("__builtin_vis_fmul8sux16", CODE_FOR_fmul8sux16_vis, + v4hi_ftype_v8qi_v4hi); + def_builtin_const ("__builtin_vis_fmul8ulx16", CODE_FOR_fmul8ulx16_vis, + v4hi_ftype_v8qi_v4hi); + def_builtin_const ("__builtin_vis_fmuld8sux16", CODE_FOR_fmuld8sux16_vis, + v2si_ftype_v4qi_v2hi); + def_builtin_const ("__builtin_vis_fmuld8ulx16", CODE_FOR_fmuld8ulx16_vis, + v2si_ftype_v4qi_v2hi); /* Data aligning. */ def_builtin ("__builtin_vis_faligndatav4hi", CODE_FOR_faligndatav4hi_vis, @@ -9187,7 +9201,7 @@ sparc_vis_init_builtins (void) def_builtin ("__builtin_vis_faligndatav2si", CODE_FOR_faligndatav2si_vis, v2si_ftype_v2si_v2si); def_builtin ("__builtin_vis_faligndatadi", CODE_FOR_faligndatadi_vis, - di_ftype_di_di); + di_ftype_di_di); if (TARGET_ARCH64) { def_builtin ("__builtin_vis_alignaddr", CODE_FOR_alignaddrdi_vis, @@ -9204,39 +9218,39 @@ sparc_vis_init_builtins (void) } /* Pixel distance. */ - def_builtin ("__builtin_vis_pdist", CODE_FOR_pdist_vis, - di_ftype_v8qi_v8qi_di); + def_builtin_const ("__builtin_vis_pdist", CODE_FOR_pdist_vis, + di_ftype_v8qi_v8qi_di); /* Edge handling. */ if (TARGET_ARCH64) { - def_builtin ("__builtin_vis_edge8", CODE_FOR_edge8di_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge8l", CODE_FOR_edge8ldi_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge16", CODE_FOR_edge16di_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge16l", CODE_FOR_edge16ldi_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge32", CODE_FOR_edge32di_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge32l", CODE_FOR_edge32ldi_vis, - si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge8", CODE_FOR_edge8di_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge8l", CODE_FOR_edge8ldi_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge16", CODE_FOR_edge16di_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge16l", CODE_FOR_edge16ldi_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge32", CODE_FOR_edge32di_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge32l", CODE_FOR_edge32ldi_vis, + si_ftype_ptr_ptr); } else { - def_builtin ("__builtin_vis_edge8", CODE_FOR_edge8si_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge8l", CODE_FOR_edge8lsi_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge16", CODE_FOR_edge16si_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge16l", CODE_FOR_edge16lsi_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge32", CODE_FOR_edge32si_vis, - si_ftype_ptr_ptr); - def_builtin ("__builtin_vis_edge32l", CODE_FOR_edge32lsi_vis, - si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge8", CODE_FOR_edge8si_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge8l", CODE_FOR_edge8lsi_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge16", CODE_FOR_edge16si_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge16l", CODE_FOR_edge16lsi_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge32", CODE_FOR_edge32si_vis, + si_ftype_ptr_ptr); + def_builtin_const ("__builtin_vis_edge32l", CODE_FOR_edge32lsi_vis, + si_ftype_ptr_ptr); } } |