From: Richard Kenner Date: Wed, 23 Mar 1994 22:28:26 +0000 (-0500) Subject: (simplify_rtx, case FLOAT_TRUNCATE): Simplify X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4635f7488070db8d8262cec5f962bbef3bf06575;p=gcc.git (simplify_rtx, case FLOAT_TRUNCATE): Simplify case of (float_truncate (abs (float_extend X))). From-SVN: r6857 --- diff --git a/gcc/combine.c b/gcc/combine.c index e64add4b43e..077483f42aa 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -3456,6 +3456,15 @@ simplify_rtx (x, op0_mode, last, in_dest) if (GET_CODE (XEXP (x, 0)) == FLOAT_EXTEND && GET_MODE (XEXP (XEXP (x, 0), 0)) == mode) return XEXP (XEXP (x, 0), 0); + + /* (float_truncate:SF (OP:DF (float_extend:DF foo:sf))) is + (OP:SF foo:SF) if OP is NEG or ABS. */ + if ((GET_CODE (XEXP (x, 0)) == ABS + || GET_CODE (XEXP (x, 0)) == NEG) + && GET_CODE (XEXP (XEXP (x, 0), 0)) == FLOAT_EXTEND + && GET_MODE (XEXP (XEXP (XEXP (x, 0), 0), 0)) == mode) + return gen_unary (GET_CODE (XEXP (x, 0)), + mode, XEXP (XEXP (XEXP (x, 0), 0), 0)); break; #ifdef HAVE_cc0