Commit 3653988e by David S. Miller Committed by David S. Miller

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
parent 0c514727
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.
......@@ -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);
}
}
......
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