diff options
author | Lawrence Crowl <crowl@google.com> | 2012-09-07 00:06:35 +0000 |
---|---|---|
committer | Lawrence Crowl <crowl@gcc.gnu.org> | 2012-09-07 00:06:35 +0000 |
commit | 27bcd47cfab04b1b1e6d2712e34b9b289c7a2dd7 (patch) | |
tree | 82231821d6793cd33f15d6b9792a8b82f2ec15d1 /gcc/fixed-value.c | |
parent | 316b938ed79ef024177ab82057a061a7a4b5af67 (diff) | |
download | gcc-27bcd47cfab04b1b1e6d2712e34b9b289c7a2dd7.zip gcc-27bcd47cfab04b1b1e6d2712e34b9b289c7a2dd7.tar.gz gcc-27bcd47cfab04b1b1e6d2712e34b9b289c7a2dd7.tar.bz2 |
Modify gcc/*.[hc] double_int call sites to use the new interface.
This change entailed adding a few new methods to double_int.
The change results in a 0.163% time improvement with a 70% confidence.
Tested on x86_64.
Index: gcc/ChangeLog
2012-09-06 Lawrence Crowl <crowl@google.com>
* double-int.h (double_int::operator &=): New.
(double_int::operator ^=): New.
(double_int::operator |=): New.
(double_int::mul_with_sign): Modify overflow parameter to bool*.
(double_int::add_with_sign): New.
(double_int::ule): New.
(double_int::sle): New.
(binary double_int::operator *): Remove parameter name.
(binary double_int::operator +): Likewise.
(binary double_int::operator -): Likewise.
(binary double_int::operator &): Likewise.
(double_int::operator |): Likewise.
(double_int::operator ^): Likewise.
(double_int::and_not): Likewise.
(double_int::from_shwi): Tidy formatting.
(double_int::from_uhwi): Likewise.
(double_int::from_uhwi): Likewise.
* double-int.c (double_int::mul_with_sign): Modify overflow parameter
to bool*.
(double_int::add_with_sign): New.
(double_int::ule): New.
(double_int::sle): New.
* builtins.c: Modify to use the new double_int interface.
* cgraph.c: Likewise.
* combine.c: Likewise.
* dwarf2out.c: Likewise.
* emit-rtl.c: Likewise.
* expmed.c: Likewise.
* expr.c: Likewise.
* fixed-value.c: Likewise.
* fold-const.c: Likewise.
* gimple-fold.c: Likewise.
* gimple-ssa-strength-reduction.c: Likewise.
* gimplify-rtx.c: Likewise.
* ipa-prop.c: Likewise.
* loop-iv.c: Likewise.
* optabs.c: Likewise.
* stor-layout.c: Likewise.
* tree-affine.c: Likewise.
* tree-cfg.c: Likewise.
* tree-dfa.c: Likewise.
* tree-flow-inline.h: Likewise.
* tree-object-size.c: Likewise.
* tree-predcom.c: Likewise.
* tree-pretty-print.c: Likewise.
* tree-sra.c: Likewise.
* tree-ssa-address.c: Likewise.
* tree-ssa-alias.c: Likewise.
* tree-ssa-ccp.c: Likewise.
* tree-ssa-forwprop.c: Likewise.
* tree-ssa-loop-ivopts.c: Likewise.
* tree-ssa-loop-niter.c: Likewise.
* tree-ssa-phiopt.c: Likewise.
* tree-ssa-pre.c: Likewise.
* tree-ssa-sccvn: Likewise.
* tree-ssa-structalias.c: Likewise.
* tree-ssa.c: Likewise.
* tree-switch-conversion.c: Likewise.
* tree-vect-loop-manip.c: Likewise.
* tree-vrp.c: Likewise.
* tree.h: Likewise.
* tree.c: Likewise.
* varasm.c: Likewise.
From-SVN: r191047
Diffstat (limited to 'gcc/fixed-value.c')
-rw-r--r-- | gcc/fixed-value.c | 29 |
1 files changed, 12 insertions, 17 deletions
diff --git a/gcc/fixed-value.c b/gcc/fixed-value.c index 9a34bc5..b74a60e 100644 --- a/gcc/fixed-value.c +++ b/gcc/fixed-value.c @@ -376,9 +376,8 @@ do_fixed_multiply (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, if (GET_MODE_PRECISION (f->mode) <= HOST_BITS_PER_WIDE_INT) { f->data = a->data * b->data; - f->data = f->data.lshift ((-GET_MODE_FBIT (f->mode)), - HOST_BITS_PER_DOUBLE_INT, - !unsigned_p); + f->data = f->data.lshift (-GET_MODE_FBIT (f->mode), + HOST_BITS_PER_DOUBLE_INT, !unsigned_p); overflow_p = fixed_saturate1 (f->mode, f->data, &f->data, sat_p); } else @@ -466,9 +465,8 @@ do_fixed_multiply (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, f->data.high = f->data.high | s.high; s.low = f->data.low; s.high = f->data.high; - r = r.lshift ((-GET_MODE_FBIT (f->mode)), - HOST_BITS_PER_DOUBLE_INT, - !unsigned_p); + r = r.lshift (-GET_MODE_FBIT (f->mode), + HOST_BITS_PER_DOUBLE_INT, !unsigned_p); } overflow_p = fixed_saturate2 (f->mode, r, s, &f->data, sat_p); @@ -493,8 +491,7 @@ do_fixed_divide (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, if (GET_MODE_PRECISION (f->mode) <= HOST_BITS_PER_WIDE_INT) { f->data = a->data.lshift (GET_MODE_FBIT (f->mode), - HOST_BITS_PER_DOUBLE_INT, - !unsigned_p); + HOST_BITS_PER_DOUBLE_INT, !unsigned_p); f->data = f->data.div (b->data, unsigned_p, TRUNC_DIV_EXPR); overflow_p = fixed_saturate1 (f->mode, f->data, &f->data, sat_p); } @@ -612,9 +609,8 @@ do_fixed_shift (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, if (GET_MODE_PRECISION (f->mode) <= HOST_BITS_PER_WIDE_INT || (!left_p)) { - f->data = a->data.lshift (left_p ? b->data.low : (-b->data.low), - HOST_BITS_PER_DOUBLE_INT, - !unsigned_p); + f->data = a->data.lshift (left_p ? b->data.low : -b->data.low, + HOST_BITS_PER_DOUBLE_INT, !unsigned_p); if (left_p) /* Only left shift saturates. */ overflow_p = fixed_saturate1 (f->mode, f->data, &f->data, sat_p); } @@ -630,8 +626,7 @@ do_fixed_shift (FIXED_VALUE_TYPE *f, const FIXED_VALUE_TYPE *a, else { temp_low = a->data.lshift (b->data.low, - HOST_BITS_PER_DOUBLE_INT, - !unsigned_p); + HOST_BITS_PER_DOUBLE_INT, !unsigned_p); /* Logical shift right to temp_high. */ temp_high = a->data.llshift (b->data.low - HOST_BITS_PER_DOUBLE_INT, HOST_BITS_PER_DOUBLE_INT); @@ -801,8 +796,8 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode, double_int temp_high, temp_low; int amount = GET_MODE_FBIT (mode) - GET_MODE_FBIT (a->mode); temp_low = a->data.lshift (amount, - HOST_BITS_PER_DOUBLE_INT, - SIGNED_FIXED_POINT_MODE_P (a->mode)); + HOST_BITS_PER_DOUBLE_INT, + SIGNED_FIXED_POINT_MODE_P (a->mode)); /* Logical shift right to temp_high. */ temp_high = a->data.llshift (amount - HOST_BITS_PER_DOUBLE_INT, HOST_BITS_PER_DOUBLE_INT); @@ -864,8 +859,8 @@ fixed_convert (FIXED_VALUE_TYPE *f, enum machine_mode mode, /* Right shift a to temp based on a->mode. */ double_int temp; temp = a->data.lshift (GET_MODE_FBIT (mode) - GET_MODE_FBIT (a->mode), - HOST_BITS_PER_DOUBLE_INT, - SIGNED_FIXED_POINT_MODE_P (a->mode)); + HOST_BITS_PER_DOUBLE_INT, + SIGNED_FIXED_POINT_MODE_P (a->mode)); f->mode = mode; f->data = temp; if (SIGNED_FIXED_POINT_MODE_P (a->mode) == |