diff mbox

wide-int, avr

Message ID 3A15B165-F8F1-4BDC-9B0B-861ED16599EF@comcast.net
State New
Headers show

Commit Message

Mike Stump Jan. 2, 2014, 1:55 a.m. UTC
On Nov 23, 2013, at 11:19 AM, Mike Stump <mikestump@comcast.net> wrote:
> Richi has asked the we break the wide-int patch so that the individual port and front end maintainers can review their parts without have to go through the entire patch.    This patch covers the avr port.

> Ok?

Ping?
* config/avr/avr.c
	(avr_out_round): Use wide-int interfaces.
	(avr_fold_builtin): Likewise.

Comments

Mike Stump Jan. 2, 2014, 1:59 a.m. UTC | #1
On Jan 1, 2014, at 5:55 PM, Mike Stump <mikestump@comcast.net> wrote:
> On Nov 23, 2013, at 11:19 AM, Mike Stump <mikestump@comcast.net> wrote:
>> Richi has asked the we break the wide-int patch so that the individual port and front end maintainers can review their parts without have to go through the entire patch.    This patch covers the avr port.
> 
>> Ok?
> 
> Ping?

Ignore this one.  For some reason my Mail reader didn't collapse the reply into the right thread…  ouch.
diff mbox

Patch

diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 8d98c81..e94e0d7 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -7550,6 +7550,8 @@  avr_out_round (rtx insn ATTRIBUTE_UNUSED, rtx *xop, int *plen)
   // The smallest fractional bit not cleared by the rounding is 2^(-RP).
   int fbit = (int) GET_MODE_FBIT (mode);
   double_int i_add = double_int_zero.set_bit (fbit-1 - INTVAL (xop[2]));
+  wide_int wi_add = wi::set_bit_in_zero (fbit-1 - INTVAL (xop[2]),
+					 GET_MODE_PRECISION (imode));
   // Lengths of PLUS and AND parts.
   int len_add = 0, *plen_add = plen ? &len_add : NULL;
   int len_and = 0, *plen_and = plen ? &len_and : NULL;
@@ -7579,7 +7581,7 @@  avr_out_round (rtx insn ATTRIBUTE_UNUSED, rtx *xop, int *plen)
   // Rounding point                           ^^^^^^^
   // Added above                                      ^^^^^^^^^
   rtx xreg = simplify_gen_subreg (imode, xop[0], mode, 0);
-  rtx xmask = immed_double_int_const (-i_add - i_add, imode);
+  rtx xmask = immed_wide_int_const (-wi_add - wi_add, imode);
 
   xpattern = gen_rtx_SET (VOIDmode, xreg, gen_rtx_AND (imode, xreg, xmask));
 
@@ -12230,7 +12232,7 @@  avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg,
             break;
           }
 
-        tmap = double_int_to_tree (map_type, tree_to_double_int (arg[0]));
+        tmap = wide_int_to_tree (map_type, arg[0]);
         map = TREE_INT_CST_LOW (tmap);
 
         if (TREE_CODE (tval) != INTEGER_CST
@@ -12335,8 +12337,7 @@  avr_fold_builtin (tree fndecl, int n_args ATTRIBUTE_UNUSED, tree *arg,
 
         /* Use map o G^-1 instead of original map to undo the effect of G.  */
 
-        tmap = double_int_to_tree (map_type,
-				   double_int::from_uhwi (best_g.map));
+        tmap = wide_int_to_tree (map_type, best_g.map);
 
         return build_call_expr (fndecl, 3, tmap, tbits, tval);
       } /* AVR_BUILTIN_INSERT_BITS */