Commit 28826a66 by Kelvin Nilsen

scalar-insert-exp-3.c: New test.

gcc/testsuite/ChangeLog:

2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* gcc.target/powerpc/bfp/scalar-insert-exp-3.c: New test.
	* gcc.target/powerpc/bfp/scalar-insert-exp-4.c: New test.
	* gcc.target/powerpc/bfp/scalar-insert-exp-5.c: New test.
	* gcc.target/powerpc/bfp/scalar-test-data-class-0.c: Adjust return
	type of test function to reflect change in built-in function's
	return type.
	* gcc.target/powerpc/bfp/scalar-test-data-class-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-3.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-4.c: Adjust return
	type and second argument type to reflect change in built-in
	function's type signature.
	* gcc.target/powerpc/bfp/scalar-test-data-class-5.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-data-class-6.c: Adjust return
	type of test function to reflect change in built-in function's
	return type.
	* gcc.target/powerpc/bfp/scalar-test-data-class-7.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-0.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-1.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-2.c: Likewise.
	* gcc.target/powerpc/bfp/scalar-test-neg-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-0.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-exp-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-0.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-extract-sig-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-insert-exp-4.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-5.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-6.c: New test.
	* gcc.target/powerpc/bfp/vec-insert-exp-7.c: New test.
	* gcc.target/powerpc/bfp/vec-test-data-class-0.c: Adjust return
	type of test function to reflect change in built-in function's
	return type.
	* gcc.target/powerpc/bfp/vec-test-data-class-1.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-2.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-3.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-4.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-5.c: Likewise.
	* gcc.target/powerpc/bfp/vec-test-data-class-6.c: Adjust types of
	test function's result and second argument to reflect change in
	built-in function's type signature.
	* gcc.target/powerpc/bfp/vec-test-data-class-7.c: Likewise.

gcc/ChangeLog:

2017-01-23  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
	exponent support with double type for first argument.
	* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
	type returned by __builtin_vec_extract_sig,
	__builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
	functions from "vector int" to "vector unsigned int" or from
	"vector long long int" to "vector unsigned long long int".
	Changed type returned by __builtin_vec_extract_exp,
	__builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
	functions from "vector int" to "vector unsigned int" or from
	"vector long long int" to "vector unsigned long long int".
	Changed return type of __builtin_vec_test_data_class,
	__builtin_vec_test_data_class_sp, and
	__builtin_vec_test_data_class_dp from "vector int" to
	"vector bool int" or from "vector long long int" to "vector bool
	long long int" and changed second argument type from "unsigned
	int" to "int".  Added new overloaded function forms "vector float
	__builtin_vec_insert_exp (vector float, vector unsigned int)" and
	"vector float __builtin_vec_insert_exp_sp (vector float, vector
	unsigned int)" and "vector double __builtin_vec_insert_exp (vector
	double, vector unsigned long long int)" and "vector double
	__builtin_vec_insert_exp_dp (vector double, vector unsigned long
	long int)".  Changed return type of
	__builtin_scalar_test_data_class and
	__builtin_scalar_test_data_class_sp and
	__builtin_scalar_test_data_class_dp from "unsigned int" to "bool
	int" and changed second argument from "unsigned int" to "int".
	Changed type returned by __builtin_scalar_test_neg,
	__builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
	from "int" to "bool int".  Added new overloaded function form
	"double __builtin_scalar_insert_exp (double, unsigned long long int)".
	* config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
	exponent double-precision with floating point first argument.
	* doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
	documentation of scalar_test_data_class, scalar_test_neg,
	scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
	vector_extract_exp, vec_extract_sig, vec_insert_exp, and
	vec_test_data_class built-in functions to reflect refinements in
	their type signatures.

From-SVN: r244834
parent fc7612fd
2017-01-23 Kelvin Nilsen <kelvin@gcc.gnu.org>
* config/rs6000/rs6000-builtin.def (VSIEDPF): Add scalar insert
exponent support with double type for first argument.
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Changed
type returned by __builtin_vec_extract_sig,
__builtin_vec_extract_sig_sp, and __builtin_vec_extract_sig_dp
functions from "vector int" to "vector unsigned int" or from
"vector long long int" to "vector unsigned long long int".
Changed type returned by __builtin_vec_extract_exp,
__builtin_vec_extract_exp_sp, and __builtin_vec_extract_exp_dp
functions from "vector int" to "vector unsigned int" or from
"vector long long int" to "vector unsigned long long int".
Changed return type of __builtin_vec_test_data_class,
__builtin_vec_test_data_class_sp, and
__builtin_vec_test_data_class_dp from "vector int" to
"vector bool int" or from "vector long long int" to "vector bool
long long int" and changed second argument type from "unsigned
int" to "int". Added new overloaded function forms "vector float
__builtin_vec_insert_exp (vector float, vector unsigned int)" and
"vector float __builtin_vec_insert_exp_sp (vector float, vector
unsigned int)" and "vector double __builtin_vec_insert_exp (vector
double, vector unsigned long long int)" and "vector double
__builtin_vec_insert_exp_dp (vector double, vector unsigned long
long int)". Changed return type of
__builtin_scalar_test_data_class and
__builtin_scalar_test_data_class_sp and
__builtin_scalar_test_data_class_dp from "unsigned int" to "bool
int" and changed second argument from "unsigned int" to "int".
Changed type returned by __builtin_scalar_test_neg,
__builtin_scalar_test_neg_sp, and __builtin_scalar_test_neg_dp
from "int" to "bool int". Added new overloaded function form
"double __builtin_scalar_insert_exp (double, unsigned long long int)".
* config/rs6000/vsx.md (xsiexpdpf): New insn for scalar insert
exponent double-precision with floating point first argument.
* doc/extend.texi (PowerPC AltiVec Built-in Functions): Adjust
documentation of scalar_test_data_class, scalar_test_neg,
scalar_extract_sig, scalar_extract_exp, scalar_insert_exp,
vector_extract_exp, vec_extract_sig, vec_insert_exp, and
vec_test_data_class built-in functions to reflect refinements in
their type signatures.
2017-01-23 Andreas Tobler <andreast@gcc.gnu.org> 2017-01-23 Andreas Tobler <andreast@gcc.gnu.org>
* config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase * config/aarch64/aarch64.c (aarch64_elf_asm_constructor): Increase
......
...@@ -1964,6 +1964,7 @@ BU_P9V_VSX_1 (XXBRH_V8HI, "xxbrh_v8hi", CONST, p9_xxbrh_v8hi) ...@@ -1964,6 +1964,7 @@ BU_P9V_VSX_1 (XXBRH_V8HI, "xxbrh_v8hi", CONST, p9_xxbrh_v8hi)
/* 2 argument vsx scalar functions added in ISA 3.0 (power9). */ /* 2 argument vsx scalar functions added in ISA 3.0 (power9). */
BU_P9V_64BIT_VSX_2 (VSIEDP, "scalar_insert_exp", CONST, xsiexpdp) BU_P9V_64BIT_VSX_2 (VSIEDP, "scalar_insert_exp", CONST, xsiexpdp)
BU_P9V_64BIT_VSX_2 (VSIEDPF, "scalar_insert_exp_dp", CONST, xsiexpdpf)
BU_P9V_VSX_2 (VSCEDPGT, "scalar_cmp_exp_dp_gt", CONST, xscmpexpdp_gt) BU_P9V_VSX_2 (VSCEDPGT, "scalar_cmp_exp_dp_gt", CONST, xscmpexpdp_gt)
BU_P9V_VSX_2 (VSCEDPLT, "scalar_cmp_exp_dp_lt", CONST, xscmpexpdp_lt) BU_P9V_VSX_2 (VSCEDPLT, "scalar_cmp_exp_dp_lt", CONST, xscmpexpdp_lt)
......
...@@ -4360,64 +4360,74 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = { ...@@ -4360,64 +4360,74 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
RS6000_BTI_unsigned_V4SI, 0 }, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESSP, { P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESSP,
RS6000_BTI_V4SI, RS6000_BTI_V4SF, 0, 0 }, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESDP, { P9V_BUILTIN_VEC_VES, P9V_BUILTIN_VESDP,
RS6000_BTI_V2DI, RS6000_BTI_V2DF, 0, 0 }, RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
{ P9V_BUILTIN_VEC_VESSP, P9V_BUILTIN_VESSP, { P9V_BUILTIN_VEC_VESSP, P9V_BUILTIN_VESSP,
RS6000_BTI_V4SI, RS6000_BTI_V4SF, 0, 0 }, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VESDP, P9V_BUILTIN_VESDP, { P9V_BUILTIN_VEC_VESDP, P9V_BUILTIN_VESDP,
RS6000_BTI_V2DI, RS6000_BTI_V2DF, 0, 0 }, RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
{ P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEESP, { P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEESP,
RS6000_BTI_V4SI, RS6000_BTI_V4SF, 0, 0 }, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEEDP, { P9V_BUILTIN_VEC_VEE, P9V_BUILTIN_VEEDP,
RS6000_BTI_V2DI, RS6000_BTI_V2DF, 0, 0 }, RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
{ P9V_BUILTIN_VEC_VEESP, P9V_BUILTIN_VEESP, { P9V_BUILTIN_VEC_VEESP, P9V_BUILTIN_VEESP,
RS6000_BTI_V4SI, RS6000_BTI_V4SF, 0, 0 }, RS6000_BTI_unsigned_V4SI, RS6000_BTI_V4SF, 0, 0 },
{ P9V_BUILTIN_VEC_VEEDP, P9V_BUILTIN_VEEDP, { P9V_BUILTIN_VEC_VEEDP, P9V_BUILTIN_VEEDP,
RS6000_BTI_V2DI, RS6000_BTI_V2DF, 0, 0 }, RS6000_BTI_unsigned_V2DI, RS6000_BTI_V2DF, 0, 0 },
{ P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCSP, { P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCSP,
RS6000_BTI_V4SI, RS6000_BTI_V4SF, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCDP, { P9V_BUILTIN_VEC_VTDC, P9V_BUILTIN_VTDCDP,
RS6000_BTI_V2DI, RS6000_BTI_V2DF, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VTDCSP, P9V_BUILTIN_VTDCSP, { P9V_BUILTIN_VEC_VTDCSP, P9V_BUILTIN_VTDCSP,
RS6000_BTI_V4SI, RS6000_BTI_V4SF, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_V4SI, RS6000_BTI_V4SF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VTDCDP, P9V_BUILTIN_VTDCDP, { P9V_BUILTIN_VEC_VTDCDP, P9V_BUILTIN_VTDCDP,
RS6000_BTI_V2DI, RS6000_BTI_V2DF, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_V2DI, RS6000_BTI_V2DF, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIESP, { P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIEDP, { P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ P9V_BUILTIN_VEC_VIE, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, 0 },
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP, { P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 }, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIESP, P9V_BUILTIN_VIESP,
RS6000_BTI_V4SF, RS6000_BTI_V4SF, RS6000_BTI_unsigned_V4SI, 0 },
{ P9V_BUILTIN_VEC_VIEDP, P9V_BUILTIN_VIEDP, { P9V_BUILTIN_VEC_VIEDP, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 }, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, RS6000_BTI_unsigned_V2DI, 0 },
{ P9V_BUILTIN_VEC_VIEDP, P9V_BUILTIN_VIEDP,
RS6000_BTI_V2DF, RS6000_BTI_V2DF, RS6000_BTI_unsigned_V2DI, 0 },
{ P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCSP, { P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCSP,
RS6000_BTI_UINTSI, RS6000_BTI_float, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_int, RS6000_BTI_float, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCDP, { P9V_BUILTIN_VEC_VSTDC, P9V_BUILTIN_VSTDCDP,
RS6000_BTI_UINTSI, RS6000_BTI_double, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_int, RS6000_BTI_double, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDCSP, P9V_BUILTIN_VSTDCSP, { P9V_BUILTIN_VEC_VSTDCSP, P9V_BUILTIN_VSTDCSP,
RS6000_BTI_UINTSI, RS6000_BTI_float, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_int, RS6000_BTI_float, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDCDP, P9V_BUILTIN_VSTDCDP, { P9V_BUILTIN_VEC_VSTDCDP, P9V_BUILTIN_VSTDCDP,
RS6000_BTI_UINTSI, RS6000_BTI_double, RS6000_BTI_UINTSI, 0 }, RS6000_BTI_bool_int, RS6000_BTI_double, RS6000_BTI_INTSI, 0 },
{ P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNSP, { P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNSP,
RS6000_BTI_INTSI, RS6000_BTI_float, 0, 0 }, RS6000_BTI_bool_int, RS6000_BTI_float, 0, 0 },
{ P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNDP, { P9V_BUILTIN_VEC_VSTDCN, P9V_BUILTIN_VSTDCNDP,
RS6000_BTI_INTSI, RS6000_BTI_double, 0, 0 }, RS6000_BTI_bool_int, RS6000_BTI_double, 0, 0 },
{ P9V_BUILTIN_VEC_VSTDCNSP, P9V_BUILTIN_VSTDCNSP, { P9V_BUILTIN_VEC_VSTDCNSP, P9V_BUILTIN_VSTDCNSP,
RS6000_BTI_INTSI, RS6000_BTI_float, 0, 0 }, RS6000_BTI_bool_int, RS6000_BTI_float, 0, 0 },
{ P9V_BUILTIN_VEC_VSTDCNDP, P9V_BUILTIN_VSTDCNDP, { P9V_BUILTIN_VEC_VSTDCNDP, P9V_BUILTIN_VSTDCNDP,
RS6000_BTI_INTSI, RS6000_BTI_double, 0, 0 }, RS6000_BTI_bool_int, RS6000_BTI_double, 0, 0 },
{ P9V_BUILTIN_VEC_VSEEDP, P9V_BUILTIN_VSEEDP, { P9V_BUILTIN_VEC_VSEEDP, P9V_BUILTIN_VSEEDP,
RS6000_BTI_UINTSI, RS6000_BTI_double, 0, 0 }, RS6000_BTI_UINTSI, RS6000_BTI_double, 0, 0 },
...@@ -4427,6 +4437,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = { ...@@ -4427,6 +4437,8 @@ const struct altivec_builtin_types altivec_overloaded_builtins[] = {
{ P9V_BUILTIN_VEC_VSIEDP, P9V_BUILTIN_VSIEDP, { P9V_BUILTIN_VEC_VSIEDP, P9V_BUILTIN_VSIEDP,
RS6000_BTI_double, RS6000_BTI_UINTDI, RS6000_BTI_UINTDI, 0 }, RS6000_BTI_double, RS6000_BTI_UINTDI, RS6000_BTI_UINTDI, 0 },
{ P9V_BUILTIN_VEC_VSIEDP, P9V_BUILTIN_VSIEDPF,
RS6000_BTI_double, RS6000_BTI_double, RS6000_BTI_UINTDI, 0 },
{ P9V_BUILTIN_VEC_VSCEDPGT, P9V_BUILTIN_VSCEDPGT, { P9V_BUILTIN_VEC_VSCEDPGT, P9V_BUILTIN_VSCEDPGT,
RS6000_BTI_INTSI, RS6000_BTI_double, RS6000_BTI_double, 0 }, RS6000_BTI_INTSI, RS6000_BTI_double, RS6000_BTI_double, 0 },
......
...@@ -3426,6 +3426,16 @@ ...@@ -3426,6 +3426,16 @@
"xsiexpdp %x0,%1,%2" "xsiexpdp %x0,%1,%2"
[(set_attr "type" "fpsimple")]) [(set_attr "type" "fpsimple")])
;; VSX Scalar Insert Exponent Double-Precision Floating Point Argument
(define_insn "xsiexpdpf"
[(set (match_operand:DF 0 "vsx_register_operand" "=wa")
(unspec:DF [(match_operand:DF 1 "register_operand" "r")
(match_operand:DI 2 "register_operand" "r")]
UNSPEC_VSX_SIEXPDP))]
"TARGET_P9_VECTOR && TARGET_64BIT"
"xsiexpdp %x0,%1,%2"
[(set_attr "type" "fpsimple")])
;; VSX Scalar Compare Exponents Double-Precision ;; VSX Scalar Compare Exponents Double-Precision
(define_expand "xscmpexpdp_<code>" (define_expand "xscmpexpdp_<code>"
[(set (match_dup 3) [(set (match_dup 3)
......
...@@ -15133,17 +15133,19 @@ unsigned long long int scalar_extract_sig (double source); ...@@ -15133,17 +15133,19 @@ unsigned long long int scalar_extract_sig (double source);
double double
scalar_insert_exp (unsigned long long int significand, unsigned long long int exponent); scalar_insert_exp (unsigned long long int significand, unsigned long long int exponent);
double
scalar_insert_exp (double significand, unsigned long long int exponent);
int scalar_cmp_exp_gt (double arg1, double arg2); int scalar_cmp_exp_gt (double arg1, double arg2);
int scalar_cmp_exp_lt (double arg1, double arg2); int scalar_cmp_exp_lt (double arg1, double arg2);
int scalar_cmp_exp_eq (double arg1, double arg2); int scalar_cmp_exp_eq (double arg1, double arg2);
int scalar_cmp_exp_unordered (double arg1, double arg2); int scalar_cmp_exp_unordered (double arg1, double arg2);
int scalar_test_data_class (float source, unsigned int condition); bool scalar_test_data_class (float source, const int condition);
int scalar_test_data_class (double source, unsigned int condition); bool scalar_test_data_class (double source, const int condition);
int scalar_test_neg (float source); bool scalar_test_neg (float source);
int scalar_test_neg (double source); bool scalar_test_neg (double source);
int __builtin_byte_in_set (unsigned char u, unsigned long long set); int __builtin_byte_in_set (unsigned char u, unsigned long long set);
int __builtin_byte_in_range (unsigned char u, unsigned int range); int __builtin_byte_in_range (unsigned char u, unsigned int range);
...@@ -15178,19 +15180,30 @@ random number. The @code{__builtin_darn_raw} function provides a ...@@ -15178,19 +15180,30 @@ random number. The @code{__builtin_darn_raw} function provides a
64-bit raw random number. The @code{__builtin_darn_32} function 64-bit raw random number. The @code{__builtin_darn_32} function
provides a 32-bit random number. provides a 32-bit random number.
The @code{scalar_extract_sig} and @code{scalar_insert_exp} The @code{scalar_extract_exp} and @code{scalar_extract_sig}
functions require a 64-bit environment supporting ISA 3.0 or later. functions require a 64-bit environment supporting ISA 3.0 or later.
The @code{scalar_extract_exp} and @code{vec_extract_sig} built-in The @code{scalar_extract_exp} and @code{scalar_extract_sig} built-in
functions return the significand and exponent respectively of their functions return the significand and the biased exponent value
@code{source} arguments. The respectively of their @code{source} arguments.
@code{scalar_insert_exp} built-in function returns a double-precision Within the result returned by @code{scalar_extract_sig},
the @code{0x10000000000000} bit is set if the
function's @code{source} argument is in normalized form.
Otherwise, this bit is set to 0.
Note that the sign of the significand is not represented in the result
returned from the @code{scalar_extract_sig} function. Use the
@code{scalar_test_neg} function to test the sign of its @code{double}
argument.
The @code{scalar_insert_exp}
function requires a 64-bit environment supporting ISA 3.0 or later.
The @code{scalar_insert_exp} built-in function returns a double-precision
floating point value that is constructed by assembling the values of its floating point value that is constructed by assembling the values of its
@code{significand} and @code{exponent} arguments. The sign of the @code{significand} and @code{exponent} arguments. The sign of the
result is copied from the most significant bit of the result is copied from the most significant bit of the
@code{significand} argument. The significand and exponent components @code{significand} argument. The significand and exponent components
of the result are composed of the least significant 11 bits of the of the result are composed of the least significant 11 bits of the
@code{significand} argument and the least significant 52 bits of the @code{exponent} argument and the least significant 52 bits of the
@code{exponent} argument. @code{significand} argument.
The @code{scalar_cmp_exp_gt}, @code{scalar_cmp_exp_lt}, The @code{scalar_cmp_exp_gt}, @code{scalar_cmp_exp_lt},
@code{scalar_cmp_exp_eq}, and @code{scalar_cmp_exp_unordered} built-in @code{scalar_cmp_exp_eq}, and @code{scalar_cmp_exp_unordered} built-in
...@@ -15199,11 +15212,11 @@ than, equal to, or not comparable to @code{arg2} respectively. The ...@@ -15199,11 +15212,11 @@ than, equal to, or not comparable to @code{arg2} respectively. The
arguments are not comparable if one or the other equals NaN (not a arguments are not comparable if one or the other equals NaN (not a
number). number).
The @code{scalar_test_data_class} built-in functions return a non-zero The @code{scalar_test_data_class} built-in function returns 1
value if any of the condition tests enabled by the value of the if any of the condition tests enabled by the value of the
@code{condition} variable are true. The @code{condition} variable are true, and 0 otherwise. The
@code{condition} argument must be an unsigned integer with value not @code{condition} argument must be a compile-time constant integer with
exceeding 127. The value not exceeding 127. The
@code{condition} argument is encoded as a bitmask with each bit @code{condition} argument is encoded as a bitmask with each bit
enabling the testing of a different condition, as characterized by the enabling the testing of a different condition, as characterized by the
following: following:
...@@ -15217,10 +15230,8 @@ following: ...@@ -15217,10 +15230,8 @@ following:
0x01 Test for -Denormal 0x01 Test for -Denormal
@end smallexample @end smallexample
If all of the enabled test conditions are false, the return value is 0. The @code{scalar_test_neg} built-in function returns 1 if its
@code{source} argument holds a negative value, 0 otherwise.
The @code{scalar_test_neg} built-in functions return a non-zero value
if their @code{source} argument holds a negative value.
The @code{__builtin_byte_in_set} function requires a The @code{__builtin_byte_in_set} function requires a
64-bit environment supporting ISA 3.0 or later. This function returns 64-bit environment supporting ISA 3.0 or later. This function returns
...@@ -18140,39 +18151,66 @@ elements of the vector result. ...@@ -18140,39 +18151,66 @@ elements of the vector result.
The following built-in functions are available for the PowerPC family The following built-in functions are available for the PowerPC family
of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}): of processors, starting with ISA 3.0 or later (@option{-mcpu=power9}):
@smallexample @smallexample
__vector int __vector unsigned int
vec_extract_exp (__vector float source); vec_extract_exp (__vector float source);
__vector long long int __vector unsigned long long int
vec_extract_exp (__vector double source); vec_extract_exp (__vector double source);
__vector int __vector unsigned int
vec_extract_sig (__vector float source); vec_extract_sig (__vector float source);
__vector long long int __vector unsigned long long int
vec_extract_sig (__vector double source); vec_extract_sig (__vector double source);
__vector float __vector float
vec_insert_exp (__vector unsigned int significands, vec_insert_exp (__vector unsigned int significands,
__vector unsigned int exponents); __vector unsigned int exponents);
__vector float
vec_insert_exp (__vector unsigned float significands,
__vector unsigned int exponents);
__vector double __vector double
vec_insert_exp (__vector unsigned long long int significands, vec_insert_exp (__vector unsigned long long int significands,
__vector unsigned long long int exponents); __vector unsigned long long int exponents);
__vector double
vec_insert_exp (__vector unsigned double significands,
__vector unsigned long long int exponents);
__vector int vec_test_data_class (__vector float source, __vector bool int vec_test_data_class (__vector float source,
unsigned int condition); const int condition);
__vector long long int vec_test_data_class (__vector double source, __vector bool long long int vec_test_data_class (__vector double source,
unsigned int condition); const int condition);
@end smallexample @end smallexample
The @code{vec_extract_sig} and @code{vec_extract_exp} built-in The @code{vec_extract_sig} and @code{vec_extract_exp} built-in
functions return vectors representing the significands and exponents functions return vectors representing the significands and biased
of their @code{source} arguments respectively. The exponent values of their @code{source} arguments respectively.
@code{vec_insert_exp} built-in functions return a vector of single- or Within the result vector returned by @code{vec_extract_sig}, the
double-precision floating @code{0x800000} bit of each vector element returned when the
function's @code{source} argument is of type @code{float} is set to 1
if the corresponding floating point value is in normalized form.
Otherwise, this bit is set to 0. When the @code{source} argument is
of type @code{double}, the @code{0x10000000000000} bit within each of
the result vector's elements is set according to the same rules.
Note that the sign of the significand is not represented in the result
returned from the @code{vec_extract_sig} function. To extract the
sign bits, use the
@code{vec_cpsgn} function, which returns a new vector within which all
of the sign bits of its second argument vector are overwritten with the
sign bits copied from the coresponding elements of its first argument
vector, and all other (non-sign) bits of the second argument vector
are copied unchanged into the result vector.
The @code{vec_insert_exp} built-in functions return a vector of
single- or double-precision floating
point values constructed by assembling the values of their point values constructed by assembling the values of their
@code{significands} and @code{exponents} arguments into the @code{significands} and @code{exponents} arguments into the
corresponding elements of the returned vector. The sign of each corresponding elements of the returned vector.
The sign of each
element of the result is copied from the most significant bit of the element of the result is copied from the most significant bit of the
corresponding entry within the @code{significands} argument. The corresponding entry within the @code{significands} argument.
Note that the relevant
bits of the @code{significands} argument are the same, for both integer
and floating point types.
The
significand and exponent components of each element of the result are significand and exponent components of each element of the result are
composed of the least significant bits of the corresponding composed of the least significant bits of the corresponding
@code{significands} element and the least significant bits of the @code{significands} element and the least significant bits of the
...@@ -18181,8 +18219,8 @@ corresponding @code{exponents} element. ...@@ -18181,8 +18219,8 @@ corresponding @code{exponents} element.
The @code{vec_test_data_class} built-in function returns a vector The @code{vec_test_data_class} built-in function returns a vector
representing the results of testing the @code{source} vector for the representing the results of testing the @code{source} vector for the
condition selected by the @code{condition} argument. The condition selected by the @code{condition} argument. The
@code{condition} argument must be an unsigned integer with value not @code{condition} argument must be a compile-time constant integer with
exceeding 127. The value not exceeding 127. The
@code{condition} argument is encoded as a bitmask with each bit @code{condition} argument is encoded as a bitmask with each bit
enabling the testing of a different condition, as characterized by the enabling the testing of a different condition, as characterized by the
following: following:
......
2017-01-23 Kelvin Nilsen <kelvin@gcc.gnu.org>
* gcc.target/powerpc/bfp/scalar-insert-exp-3.c: New test.
* gcc.target/powerpc/bfp/scalar-insert-exp-4.c: New test.
* gcc.target/powerpc/bfp/scalar-insert-exp-5.c: New test.
* gcc.target/powerpc/bfp/scalar-test-data-class-0.c: Adjust return
type of test function to reflect change in built-in function's
return type.
* gcc.target/powerpc/bfp/scalar-test-data-class-1.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-data-class-2.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-data-class-3.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-data-class-4.c: Adjust return
type and second argument type to reflect change in built-in
function's type signature.
* gcc.target/powerpc/bfp/scalar-test-data-class-5.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-data-class-6.c: Adjust return
type of test function to reflect change in built-in function's
return type.
* gcc.target/powerpc/bfp/scalar-test-data-class-7.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-neg-0.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-neg-1.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-neg-2.c: Likewise.
* gcc.target/powerpc/bfp/scalar-test-neg-3.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-exp-0.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-exp-1.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-exp-2.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-exp-3.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-sig-0.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-sig-1.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-sig-2.c: Likewise.
* gcc.target/powerpc/bfp/vec-extract-sig-3.c: Likewise.
* gcc.target/powerpc/bfp/vec-insert-exp-4.c: New test.
* gcc.target/powerpc/bfp/vec-insert-exp-5.c: New test.
* gcc.target/powerpc/bfp/vec-insert-exp-6.c: New test.
* gcc.target/powerpc/bfp/vec-insert-exp-7.c: New test.
* gcc.target/powerpc/bfp/vec-test-data-class-0.c: Adjust return
type of test function to reflect change in built-in function's
return type.
* gcc.target/powerpc/bfp/vec-test-data-class-1.c: Likewise.
* gcc.target/powerpc/bfp/vec-test-data-class-2.c: Likewise.
* gcc.target/powerpc/bfp/vec-test-data-class-3.c: Likewise.
* gcc.target/powerpc/bfp/vec-test-data-class-4.c: Likewise.
* gcc.target/powerpc/bfp/vec-test-data-class-5.c: Likewise.
* gcc.target/powerpc/bfp/vec-test-data-class-6.c: Adjust types of
test function's result and second argument to reflect change in
built-in function's type signature.
* gcc.target/powerpc/bfp/vec-test-data-class-7.c: Likewise.
2017-01-23 Nathan Sidwell <nathan@acm.org> 2017-01-23 Nathan Sidwell <nathan@acm.org>
PR C++/71710 PR C++/71710
......
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-require-effective-target lp64 } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power9" } */
/* This test should succeed only on 64-bit configurations. */
#include <altivec.h>
double
insert_exponent (double *significand_p,
unsigned long long int *exponent_p)
{
double significand = *significand_p;
unsigned long long int exponent = *exponent_p;
return scalar_insert_exp (significand, exponent);
}
/* { dg-final { scan-assembler "xsiexpdp" } } */
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
/* { dg-require-effective-target lp64 } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power8" } */
/* This test should succeed only on 64-bit configurations. */
#include <altivec.h>
double
insert_exponent (double *significand_p,
unsigned long long int *exponent_p)
{
double significand = *significand_p;
unsigned long long int exponent = *exponent_p;
return __builtin_vec_scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vsx_scalar_insert_exp_dp requires" } */
}
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-require-effective-target ilp32 } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power9" } */
/* This test only runs on 32-bit configurations, where a compiler error
should be issued because this builtin is not available on
32-bit configurations. */
#include <altivec.h>
double
insert_exponent (double *significand_p,
unsigned long long int *exponent_p)
{
double significand = *significand_p;
unsigned long long int exponent = *exponent_p;
return scalar_insert_exp (significand, exponent); /* { dg-error "Builtin function __builtin_vec_scalar_insert_exp not supported in this compiler configuration" } */
}
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (double *p) test_data_class (double *p)
{ {
double source = *p; double source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (float *p) test_data_class (float *p)
{ {
float source = *p; float source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (double *p) test_data_class (double *p)
{ {
double source = *p; double source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (float *p) test_data_class (float *p)
{ {
float source = *p; float source = *p;
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (double *p, unsigned int condition_flag) test_data_class (double *p, const int condition_flag)
{ {
double source = *p; double source = *p;
......
...@@ -4,9 +4,10 @@ ...@@ -4,9 +4,10 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (float *p, unsigned int condition_flag) test_data_class (float *p, const int condition_flag)
{ {
float source = *p; float source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power8" } */ /* { dg-options "-mcpu=power8" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (double *p) test_data_class (double *p)
{ {
double source = *p; double source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power8" } */ /* { dg-options "-mcpu=power8" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_data_class (float *p) test_data_class (float *p)
{ {
float source = *p; float source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_neg (double *p) test_neg (double *p)
{ {
double source = *p; double source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power9" } */ /* { dg-options "-mcpu=power9" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_neg (float *p) test_neg (float *p)
{ {
float source = *p; float source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power8" } */ /* { dg-options "-mcpu=power8" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_neg (float *p) test_neg (float *p)
{ {
float source = *p; float source = *p;
......
...@@ -4,8 +4,9 @@ ...@@ -4,8 +4,9 @@
/* { dg-options "-mcpu=power8" } */ /* { dg-options "-mcpu=power8" } */
#include <altivec.h> #include <altivec.h>
#include <stdbool.h>
unsigned int bool
test_neg (double *p) test_neg (double *p)
{ {
double source = *p; double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector unsigned int
get_exponents (__vector float *p) get_exponents (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector unsigned long long int
get_exponents (__vector double *p) get_exponents (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector unsigned long long int
get_exponents (__vector double *p) get_exponents (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector unsigned int
get_exponents (__vector float *p) get_exponents (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector unsigned int
get_significands (__vector float *p) get_significands (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector unsigned long long int
get_significands (__vector double *p) get_significands (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector unsigned long long int
get_significands (__vector double *p) get_significands (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector unsigned int
get_significands (__vector float *p) get_significands (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power9" } */
#include <altivec.h>
__vector float
make_floats (__vector float *significands_p,
__vector unsigned int *exponents_p)
{
__vector float significands = *significands_p;
__vector unsigned int exponents = *exponents_p;
return vec_insert_exp (significands, exponents);
}
/* { dg-final { scan-assembler "xviexpsp" } } */
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power9" } */
#include <altivec.h>
__vector double
make_doubles (__vector double *significands_p,
__vector unsigned long long int *exponents_p)
{
__vector double significands = *significands_p;
__vector unsigned long long int exponents = *exponents_p;
return vec_insert_exp (significands, exponents);
}
/* { dg-final { scan-assembler "xviexpdp" } } */
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power8" } */
#include <altivec.h>
__vector float
make_floats (__vector float *significands_p,
__vector unsigned int *exponents_p)
{
__vector float significands = *significands_p;
__vector unsigned int exponents = *exponents_p;
return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "Builtin function __builtin_vsx_insert_exp_sp requires" } */
}
/* { dg-do compile { target { powerpc*-*-* } } } */
/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
/* { dg-require-effective-target powerpc_p9vector_ok } */
/* { dg-options "-mcpu=power8" } */
#include <altivec.h>
__vector double
make_doubles (__vector double *significands_p,
__vector unsigned long long int *exponents_p)
{
__vector double significands = *significands_p;
__vector unsigned long long int exponents = *exponents_p;
return __builtin_vec_insert_exp (significands, exponents); /* { dg-error "Builtin function __builtin_vsx_insert_exp_dp requires" } */
}
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector bool int
get_data_class_flags (__vector float *p) get_data_class_flags (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector bool long long int
get_data_class_flags (__vector double *p) get_data_class_flags (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector bool long long int
get_data_class_flags (__vector double *p) get_data_class_flags (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector bool int
get_data_class_flags (__vector float *p) get_data_class_flags (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector bool int
get_data_class_flags (__vector float *p) get_data_class_flags (__vector float *p)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector bool long long int
get_data_class_flags (__vector double *p) get_data_class_flags (__vector double *p)
{ {
__vector double source = *p; __vector double source = *p;
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
#include <altivec.h> #include <altivec.h>
__vector int __vector bool int
get_data_class_flags (__vector float *p, unsigned int condition_flag) get_data_class_flags (__vector float *p, int condition_flag)
{ {
__vector float source = *p; __vector float source = *p;
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
#include <altivec.h> #include <altivec.h>
__vector long long int __vector bool long long int
get_data_class_flags (__vector double *p, unsigned int condition_flag) get_data_class_flags (__vector double *p, int condition_flag)
{ {
__vector double source = *p; __vector double source = *p;
......
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