Commit 604e36ed by Carl Love Committed by Carl Love

revert: rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.

gcc/ChangeLog:

2018-03-20 Carl Love  <cel@us.ibm.com>

	Revert
	2017-09-27  Carl Love  <cel@us.ibm.com>

	* config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
	(FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
	* config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
	fctiw instruction.

gcc/testsuite/ChangeLog:

2018-03-20  Carl Love  <cel@us.ibm.com>

	Revert
	2017-09-27  Carl Love  <cel@us.ibm.com>

	* gcc.target/powerpc/builtin-fctid-fctiw-runnable.c: New test file
	for the __builtin_fctid and __builtin_fctiw.

From-SVN: r258942
parent 69c94135
2018-03-20 Carl Love <cel@us.ibm.com>
Revert
2017-09-27 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
(FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
* config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
fctiw instruction.
2018-03-28 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/xmmintrin.h (_mm_max_pi16): Use __vector __bool
......
......@@ -615,17 +615,6 @@
| RS6000_BTC_BINARY), \
CODE_FOR_ ## ICODE) /* ICODE */
/* Miscellaneous builtins for instructions added prior to ISA 2.04. These
operate on floating point registers. */
#define BU_FP_MISC_1(ENUM, NAME, ATTR, ICODE) \
RS6000_BUILTIN_1 (MISC_BUILTIN_ ## ENUM, /* ENUM */ \
"__builtin_" NAME, /* NAME */ \
RS6000_BTM_HARD_FLOAT, /* MASK */ \
(RS6000_BTC_ ## ATTR /* ATTR */ \
| RS6000_BTC_UNARY), \
CODE_FOR_ ## ICODE) /* ICODE */
/* Miscellaneous builtins for instructions added in ISA 2.06. These
instructions don't require either the DFP or VSX options, just the basic ISA
2.06 (popcntd) enablement since they operate on general purpose
......@@ -1866,9 +1855,6 @@ BU_VSX_OVERLOAD_X (XL_BE, "xl_be")
BU_VSX_OVERLOAD_X (XST, "xst")
BU_VSX_OVERLOAD_X (XST_BE, "xst_be")
/* 1 argument builtins pre ISA 2.04. */
BU_FP_MISC_1 (FCTID, "fctid", CONST, lrintdfdi2)
BU_FP_MISC_1 (FCTIW, "fctiw", CONST, lrintsfsi2)
/* 2 argument CMPB instructions added in ISA 2.05. */
BU_P6_2 (CMPB_32, "cmpb_32", CONST, cmpbsi3)
......
......@@ -5908,14 +5908,6 @@
[(set_attr "type" "fpload")
(set_attr "length" "16")])
(define_insn "lrintsfsi2"
[(set (match_operand:SI 0 "gpc_reg_operand" "=d")
(unspec:SI [(match_operand:DF 1 "gpc_reg_operand" "d")]
UNSPEC_FCTIW))]
"TARGET_SF_FPR && TARGET_FPRND"
"fctiw %0,%1"
[(set_attr "type" "fp")])
;; No VSX equivalent to fctid
(define_insn "lrint<mode>di2"
[(set (match_operand:DI 0 "gpc_reg_operand" "=d")
......
2018-03-20 Carl Love <cel@us.ibm.com>
Revert
2017-09-27 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtin-fctid-fctiw-runnable.c: New test file
for the __builtin_fctid and __builtin_fctiw.
2018-03-28 Peter Bergner <bergner@vnet.ibm.com>
PR target/84912
......
/* { dg-do run { target { powerpc*-*-* && { lp64 && p8vector_hw } } } } */
/* { dg-options "-mcpu=power8" } */
#ifdef DEBUG
#include <stdio.h>
#endif
void abort (void);
long
test_bi_lrint_1 (float __A)
{
return (__builtin_fctid (__A));
}
long
test_bi_lrint_2 (double __A)
{
return (__builtin_fctid (__A));
}
int
test_bi_rint_1 (float __A)
{
return (__builtin_fctiw (__A));
}
int
test_bi_rint_2 (double __A)
{
return (__builtin_fctiw (__A));
}
int main( void)
{
signed long lx, expected_l;
double dy;
signed int x, expected_i;
float y;
dy = 1.45;
expected_l = 1;
lx = __builtin_fctid (dy);
if( lx != expected_l)
#ifdef DEBUG
printf("ERROR: __builtin_fctid(dy= %f) = %ld, expected %ld\n",
dy, lx, expected_l);
#else
abort();
#endif
dy = 3.51;
expected_l = 4;
lx = __builtin_fctid (dy);
if( lx != expected_l)
#ifdef DEBUG
printf("ERROR: __builtin_fctid(dy= %f) = %ld, expected %ld\n",
dy, lx, expected_l);
#else
abort();
#endif
dy = 5.57;
expected_i = 6;
x = __builtin_fctiw (dy);
if( x != expected_i)
#ifdef DEBUG
printf("ERROR: __builtin_fctiw(dy= %f) = %d, expected %d\n",
dy, x, expected_i);
#else
abort();
#endif
y = 11.47;
expected_i = 11;
x = __builtin_fctiw (y);
if( x != expected_i)
#ifdef DEBUG
printf("ERROR: __builtin_fctiw(y = %f) = %d, expected %d\n",
y, x, expected_i);
#else
abort();
#endif
y = 17.77;
expected_l = 18;
lx = test_bi_lrint_1 (y);
if( lx != expected_l)
#ifdef DEBUG
printf("ERROR: function call test_bi_lrint_1 (y = %f) = %ld, expected %ld\n",
y, lx, expected_l);
#else
abort();
#endif
dy = 7.1;
expected_l = 7;
lx = test_bi_lrint_2 (dy);
if( lx != expected_l)
#ifdef DEBUG
printf("ERROR: function call test_bi_lrint_2 (dy = %f) = %ld, expected %ld\n",
dy, lx, expected_l);
#else
abort();
#endif
y = 0.001;
expected_i = 0;
x = test_bi_rint_1 (y);
if( x != expected_i)
#ifdef DEBUG
printf("ERROR: function call test_bi_rint_1 (y = %f) = %d, expected %d\n",
y, x, expected_i);
#else
abort();
#endif
dy = 0.9999;
expected_i = 1;
x = test_bi_rint_2 (dy);
if( x != expected_i)
#ifdef DEBUG
printf("ERROR: function call test_bi_rint_2 (dy = %f) = %d, expected %d\n",
dy, x, expected_i);
#else
abort();
#endif
}
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