Commit db3cf6bd by Richard Guenther Committed by Richard Biener

i386.c (ix86_builtin_vectorized_function): Declare.

2006-12-05  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
	(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
	(ix86_builtin_vectorized_function): New function to vectorize
	sqrt.

	* gcc.dg/vect/vect.exp: Add support for -fno-math-errno tests.
	* gcc.dg/vect/vect-pow-2.c: Rename to ...
	* gcc.dg/vect/no-math-errno-vect-pow-1.c: ... this.  Require
	vect_double, xfail for spu*-*-*.

From-SVN: r119542
parent 928341b2
2006-12-05 Richard Guenther <rguenther@suse.de>
* config/i386/i386.c (ix86_builtin_vectorized_function): Declare.
(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
(ix86_builtin_vectorized_function): New function to vectorize
sqrt.
2006-12-05 Bernd Schmidt <bernd.schmidt@analog.com> 2006-12-05 Bernd Schmidt <bernd.schmidt@analog.com>
* config/bfin/bfin.c (output_file_start): Fix comment which referred to * config/bfin/bfin.c (output_file_start): Fix comment which referred to
......
...@@ -1354,6 +1354,7 @@ static bool ix86_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, ...@@ -1354,6 +1354,7 @@ static bool ix86_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode,
tree, bool); tree, bool);
static void ix86_init_builtins (void); static void ix86_init_builtins (void);
static rtx ix86_expand_builtin (tree, rtx, rtx, enum machine_mode, int); static rtx ix86_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
static tree ix86_builtin_vectorized_function (enum built_in_function, tree);
static const char *ix86_mangle_fundamental_type (tree); static const char *ix86_mangle_fundamental_type (tree);
static tree ix86_stack_protect_fail (void); static tree ix86_stack_protect_fail (void);
static rtx ix86_internal_arg_pointer (void); static rtx ix86_internal_arg_pointer (void);
...@@ -1418,6 +1419,8 @@ static section *x86_64_elf_select_section (tree decl, int reloc, ...@@ -1418,6 +1419,8 @@ static section *x86_64_elf_select_section (tree decl, int reloc,
#define TARGET_INIT_BUILTINS ix86_init_builtins #define TARGET_INIT_BUILTINS ix86_init_builtins
#undef TARGET_EXPAND_BUILTIN #undef TARGET_EXPAND_BUILTIN
#define TARGET_EXPAND_BUILTIN ix86_expand_builtin #define TARGET_EXPAND_BUILTIN ix86_expand_builtin
#undef TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
#define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION ix86_builtin_vectorized_function
#undef TARGET_ASM_FUNCTION_EPILOGUE #undef TARGET_ASM_FUNCTION_EPILOGUE
#define TARGET_ASM_FUNCTION_EPILOGUE ix86_output_function_epilogue #define TARGET_ASM_FUNCTION_EPILOGUE ix86_output_function_epilogue
...@@ -17639,6 +17642,41 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, ...@@ -17639,6 +17642,41 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
gcc_unreachable (); gcc_unreachable ();
} }
/* Returns a function decl for a vectorized version of the builtin function
with builtin function code FN and the result vector type TYPE, or NULL_TREE
if it is not available. */
static tree
ix86_builtin_vectorized_function (enum built_in_function fn, tree type)
{
enum machine_mode el_mode;
int n;
if (TREE_CODE (type) != VECTOR_TYPE)
return NULL_TREE;
el_mode = TYPE_MODE (TREE_TYPE (type));
n = TYPE_VECTOR_SUBPARTS (type);
switch (fn)
{
case BUILT_IN_SQRT:
if (el_mode == DFmode && n == 2)
return ix86_builtins[IX86_BUILTIN_SQRTPD];
return NULL_TREE;
case BUILT_IN_SQRTF:
if (el_mode == SFmode && n == 4)
return ix86_builtins[IX86_BUILTIN_SQRTPS];
return NULL_TREE;
default:
;
}
return NULL_TREE;
}
/* Store OPERAND to the memory after reload is completed. This means /* Store OPERAND to the memory after reload is completed. This means
that we can't easily use assign_stack_local. */ that we can't easily use assign_stack_local. */
rtx rtx
......
2006-12-05 Richard Guenther <rguenther@suse.de>
* gcc.dg/vect/vect.exp: Add support for -fno-math-errno tests.
* gcc.dg/vect/vect-pow-2.c: Rename to ...
* gcc.dg/vect/no-math-errno-vect-pow-1.c: ... this. Require
vect_double, xfail for spu*-*-*.
2006-12-04 Tobias Burnus <burnus@net-b.de> 2006-12-04 Tobias Burnus <burnus@net-b.de>
PR fortran/29962 PR fortran/29962
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-O2 -ftree-vectorize -fno-math-errno -fdump-tree-vect-details" } */ /* { dg-require-effective-target vect_double } */
double x[256]; double x[256];
...@@ -10,5 +10,5 @@ void foo(void) ...@@ -10,5 +10,5 @@ void foo(void)
x[i] = __builtin_pow (x[i], 0.5); x[i] = __builtin_pow (x[i], 0.5);
} }
/* { dg-final { scan-tree-dump "pattern recognized" "vect" } } */ /* { dg-final { scan-tree-dump "pattern recognized" "vect" { xfail spu*-*-* } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */ /* { dg-final { cleanup-tree-dump "vect" } } */
...@@ -102,6 +102,12 @@ lappend DEFAULT_VECTCFLAGS "-ffast-math" ...@@ -102,6 +102,12 @@ lappend DEFAULT_VECTCFLAGS "-ffast-math"
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/fast-math-vect*.\[cS\]]] \ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/fast-math-vect*.\[cS\]]] \
"" $DEFAULT_VECTCFLAGS "" $DEFAULT_VECTCFLAGS
# -fno-math-errno tests
set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
lappend DEFAULT_VECTCFLAGS "-fno-math-errno"
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-math-errno-vect*.\[cS\]]] \
"" $DEFAULT_VECTCFLAGS
# -fwrapv tests # -fwrapv tests
set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS set DEFAULT_VECTCFLAGS $SAVED_DEFAULT_VECTCFLAGS
lappend DEFAULT_VECTCFLAGS "-fwrapv" lappend DEFAULT_VECTCFLAGS "-fwrapv"
......
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