diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-03-23 17:28:26 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-03-23 17:28:26 -0500 |
commit | 4635f7488070db8d8262cec5f962bbef3bf06575 (patch) | |
tree | a3c9eae29e44d80eeaab2279e9b9a5254f5de678 /gcc | |
parent | a20dcf46c04b7bc8533b3e6c6a040c9f7083e6e6 (diff) | |
download | gcc-4635f7488070db8d8262cec5f962bbef3bf06575.zip gcc-4635f7488070db8d8262cec5f962bbef3bf06575.tar.gz gcc-4635f7488070db8d8262cec5f962bbef3bf06575.tar.bz2 |
(simplify_rtx, case FLOAT_TRUNCATE): Simplify
case of (float_truncate (abs (float_extend X))).
From-SVN: r6857
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/combine.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index e64add4..077483f 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 |