public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc(refs/vendors/ARM/heads/morello)] Rearrange extract_bit_field parameter order
@ 2022-06-16 13:46 Richard Sandiford
  0 siblings, 0 replies; only message in thread
From: Richard Sandiford @ 2022-06-16 13:46 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:6587c486c21dd08addd217c5a547f1acdf7089a5

commit 6587c486c21dd08addd217c5a547f1acdf7089a5
Author: Richard Sandiford <richard.sandiford@arm.com>
Date:   Thu Jun 16 14:42:40 2022 +0100

    Rearrange extract_bit_field parameter order
    
    The unsignedp parameter came before the bitregion parameters
    in extract_bit_field, but came after them in all subroutines.
    The rearrangement happened at the extract_bit_field->extract_bit_field_1
    boundary.
    
    IMO, the subroutine order is more natural, with the bitregion
    coming immediately after the bit position.  This patch therefore
    rearranges the extract_bit_field parameters to match.

Diff:
---
 gcc/calls.c                  |  4 ++--
 gcc/config/tilegx/tilegx.c   |  2 +-
 gcc/config/tilepro/tilepro.c |  2 +-
 gcc/expmed.c                 |  8 ++++----
 gcc/expmed.h                 |  4 ++--
 gcc/expr.c                   | 40 ++++++++++++++++++++--------------------
 gcc/function.c               |  2 +-
 7 files changed, 31 insertions(+), 31 deletions(-)

diff --git a/gcc/calls.c b/gcc/calls.c
index dbb05a1e3f8..99835da958b 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1193,7 +1193,7 @@ store_unaligned_arguments_into_pseudos (struct arg_data *args, int num_actuals)
 	    int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD);
 
 	    args[i].aligned_regs[j] = reg;
-	    word = extract_bit_field (word, bitsize, 0, 1, 0, 0, NULL_RTX,
+	    word = extract_bit_field (word, bitsize, 0, 0, 0, 1, NULL_RTX,
 				      word_mode, word_mode, false, NULL);
 
 	    /* There is no need to restrict this code to loading items
@@ -3131,7 +3131,7 @@ load_register_parameters (struct arg_data *args, int num_actuals,
 		  rtx dest = gen_rtx_REG (word_mode, REGNO (reg) + nregs - 1);
 		  unsigned int bitoff = (nregs - 1) * BITS_PER_WORD;
 		  unsigned int bitsize = const_size * BITS_PER_UNIT - bitoff;
-		  rtx x = extract_bit_field (mem, bitsize, bitoff, 1, 0, 0,
+		  rtx x = extract_bit_field (mem, bitsize, bitoff, 0, 0, 1,
 					     dest, word_mode, word_mode, false,
 					     NULL);
 		  if (BYTES_BIG_ENDIAN)
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index 92a16551ac0..784c4b2e957 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -1952,7 +1952,7 @@ tilegx_expand_unaligned_load (rtx dest_reg, rtx mem, HOST_WIDE_INT bitsize,
     {
       rtx extracted =
 	extract_bit_field (gen_lowpart (DImode, wide_result),
-			   bitsize, bit_offset % BITS_PER_UNIT,
+			   bitsize, bit_offset % BITS_PER_UNIT, 0, 0,
 			   !sign, gen_lowpart (DImode, dest_reg),
 			   DImode, DImode, false, NULL);
 
diff --git a/gcc/config/tilepro/tilepro.c b/gcc/config/tilepro/tilepro.c
index 540c6356c08..20a39ad4d4d 100644
--- a/gcc/config/tilepro/tilepro.c
+++ b/gcc/config/tilepro/tilepro.c
@@ -1681,7 +1681,7 @@ tilepro_expand_unaligned_load (rtx dest_reg, rtx mem, HOST_WIDE_INT bitsize,
     {
       rtx extracted =
 	extract_bit_field (gen_lowpart (SImode, wide_result),
-			   bitsize, bit_offset % BITS_PER_UNIT,
+			   bitsize, bit_offset % BITS_PER_UNIT, 0, 0,
 			   !sign, gen_lowpart (SImode, dest_reg),
 			   SImode, SImode, false, NULL);
 
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 26481aa2368..45db93c331a 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -978,8 +978,8 @@ store_integral_bit_field (rtx op0, opt_scalar_int_mode op0_mode,
 	  rtx value_word
 	    = fieldmode == BLKmode
 	      ? extract_bit_field (value, new_bitsize, wordnum * BITS_PER_WORD,
-				   1, wordnum * BITS_PER_WORD, bitregion_end,
-				   NULL_RTX, word_mode, word_mode,
+				   wordnum * BITS_PER_WORD, bitregion_end,
+				   1, NULL_RTX, word_mode, word_mode,
 				   false, NULL)
 	      : operand_subword_force (value, wordnum, value_mode);
 
@@ -2090,8 +2090,8 @@ extract_integral_bit_field (rtx op0, opt_scalar_int_mode op0_mode,
 
 rtx
 extract_bit_field (rtx str_rtx, poly_uint64 bitsize, poly_uint64 bitnum,
-		   int unsignedp, poly_uint64 bitregion_start,
-		   poly_uint64 bitregion_end, rtx target, machine_mode mode,
+		   poly_uint64 bitregion_start, poly_uint64 bitregion_end,
+		   int unsignedp, rtx target, machine_mode mode,
 		   machine_mode tmode, bool reverse, rtx *alt_rtl)
 {
   machine_mode mode1;
diff --git a/gcc/expmed.h b/gcc/expmed.h
index f3c5374a452..9206ac5f344 100644
--- a/gcc/expmed.h
+++ b/gcc/expmed.h
@@ -740,8 +740,8 @@ extern rtx expand_divmod (int, enum tree_code, machine_mode, rtx, rtx,
 extern void store_bit_field (rtx, poly_uint64, poly_uint64,
 			     poly_uint64, poly_uint64,
 			     machine_mode, rtx, bool);
-extern rtx extract_bit_field (rtx, poly_uint64, poly_uint64, int,
-			      poly_uint64, poly_uint64, rtx,
+extern rtx extract_bit_field (rtx, poly_uint64, poly_uint64,
+			      poly_uint64, poly_uint64, int, rtx,
 			      machine_mode, machine_mode, bool, rtx *);
 extern rtx extract_low_bits (machine_mode, machine_mode, rtx);
 extern rtx expand_mult (machine_mode, rtx, rtx, rtx, int, bool = false);
diff --git a/gcc/expr.c b/gcc/expr.c
index 51e29f43aa1..4d9f2017527 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -2209,8 +2209,8 @@ move_block_to_reg (int regno, rtx x, int nregs, machine_mode mode)
    {
       rtx return_reg = gen_rtx_REG (word_mode, regno + nregs - 1);
       emit_move_insn (return_reg,
-		      extract_bit_field (x, remainder * BITS_PER_UNIT, 0, 0,
-					 0, remainder * BITS_PER_UNIT - 1,
+		      extract_bit_field (x, remainder * BITS_PER_UNIT, 0,
+					 0, remainder * BITS_PER_UNIT - 1, 0,
 					 return_reg, word_mode, word_mode, 0,
 					 NULL));
       return;
@@ -2419,8 +2419,8 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type,
 		      && (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode)))
 		tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT,
 					     subpos * BITS_PER_UNIT,
-					     1, bitregion_start, bitregion_end,
-					     NULL_RTX, mode, mode,
+					     bitregion_start, bitregion_end,
+					     1, NULL_RTX, mode, mode,
 					     false, NULL);
 	    }
 	  else
@@ -2430,9 +2430,9 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type,
 	      gcc_assert (known_eq (bytepos, 0));
 	      mem = assign_stack_temp (GET_MODE (src), slen);
 	      emit_move_insn (mem, src);
-	      tmps[i] = extract_bit_field (mem, bytelen * BITS_PER_UNIT,
-					   0, 1, bitregion_start, bitregion_end,
-					   NULL_RTX, mode, mode,
+	      tmps[i] = extract_bit_field (mem, bytelen * BITS_PER_UNIT, 0,
+					   bitregion_start, bitregion_end,
+					   1, NULL_RTX, mode, mode,
 					   false, NULL);
 	    }
 	}
@@ -2473,9 +2473,9 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type,
 	tmps[i] = src;
       else
 	tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT,
-				     bytepos * BITS_PER_UNIT, 1,
+				     bytepos * BITS_PER_UNIT,
 				     bitregion_start, bitregion_end,
-				     NULL_RTX, mode, mode, false, NULL);
+				     1, NULL_RTX, mode, mode, false, NULL);
 
       if (maybe_ne (shift, 0))
 	tmps[i] = expand_shift (LSHIFT_EXPR, mode, tmps[i],
@@ -2939,8 +2939,8 @@ copy_blkmode_from_reg (rtx target, rtx srcreg, tree type)
 	 bitpos for the destination store (left justified).  */
       store_bit_field (dst, bitsize, bitpos % BITS_PER_WORD, 0, 0, copy_mode,
 		       extract_bit_field (src, bitsize,
-					  xbitpos % BITS_PER_WORD, 1, 0, 0,
-					  NULL_RTX, copy_mode, copy_mode,
+					  xbitpos % BITS_PER_WORD, 0, 0,
+					  1, NULL_RTX, copy_mode, copy_mode,
 					  false, NULL),
 		       false);
     }
@@ -3043,8 +3043,8 @@ copy_blkmode_to_reg (machine_mode mode_in, tree src)
       store_bit_field (dst_word, bitsize, xbitpos % BITS_PER_WORD,
 		       0, 0, word_mode,
 		       extract_bit_field (src_word, bitsize,
-					  bitpos % BITS_PER_WORD, 1, 0, 0,
-					  NULL_RTX, word_mode, word_mode,
+					  bitpos % BITS_PER_WORD, 0, 0,
+					  1, NULL_RTX, word_mode, word_mode,
 					  false, NULL),
 		       false);
     }
@@ -3493,7 +3493,7 @@ read_complex_part (rtx cplx, bool imag_p)
     }
 
   return extract_bit_field (cplx, ibitsize, imag_p ? ibitsize : 0,
-			    true, 0, 0, NULL_RTX, imode, imode, false, NULL);
+			    0, 0, true, NULL_RTX, imode, imode, false, NULL);
 }
 \f
 /* A subroutine of emit_move_insn_1.  Yet another lowpart generator.
@@ -7445,8 +7445,8 @@ store_field (rtx target, poly_int64 bitsize, poly_int64 bitpos,
       if (GET_MODE (temp) == BLKmode && known_le (bitsize, BITS_PER_WORD))
 	{
 	  temp_mode = smallest_int_mode_for_size (bitsize);
-	  temp = extract_bit_field (temp, bitsize, 0, 1, bitregion_start,
-				    bitregion_end, NULL_RTX, temp_mode,
+	  temp = extract_bit_field (temp, bitsize, 0, bitregion_start,
+				    bitregion_end, 1, NULL_RTX, temp_mode,
 				    temp_mode, false, NULL);
 	}
 
@@ -8782,7 +8782,7 @@ expand_misaligned_mem_ref (rtx temp, machine_mode mode, int unsignedp,
     }
   else if (targetm.slow_unaligned_access (mode, align))
     temp = extract_bit_field (temp, GET_MODE_BITSIZE (mode),
-			      0, unsignedp, 0, 0, target,
+			      0, 0, 0, unsignedp, target,
 			      mode, mode, false, alt_rtl);
   return temp;
 }
@@ -11438,8 +11438,8 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
 	      reversep = TYPE_REVERSE_STORAGE_ORDER (type);
 
 	    gcc_checking_assert (known_ge (bitpos, 0));
-	    op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp,
-				     bitregion_start, bitregion_end,
+	    op0 = extract_bit_field (op0, bitsize, bitpos,
+				     bitregion_start, bitregion_end, unsignedp,
 				     (modifier == EXPAND_STACK_PARM
 				      ? NULL_RTX : target),
 				     ext_mode, ext_mode, reversep, alt_rtl);
@@ -11678,7 +11678,7 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
       /* If the output type is a bit-field type, do an extraction.  */
       else if (reduce_bit_field)
 	return extract_bit_field (op0, TYPE_PRECISION (type), 0,
-				  TYPE_UNSIGNED (type), 0, 0, NULL_RTX,
+				  0, 0, TYPE_UNSIGNED (type), NULL_RTX,
 				  mode, mode, false, NULL);
       /* As a last resort, spill op0 to memory, and reload it in a
 	 different mode.  */
diff --git a/gcc/function.c b/gcc/function.c
index 41f6732afaf..f7d5a0a7b91 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3326,7 +3326,7 @@ assign_parm_setup_reg (struct assign_parm_data_all *all, tree parm,
       else
 	rtl = parmreg = extract_bit_field (validated_mem,
 			GET_MODE_BITSIZE (promoted_nominal_mode), 0,
-			unsignedp, 0, 0, parmreg,
+			0, 0, unsignedp, parmreg,
 			promoted_nominal_mode, VOIDmode, false, NULL);
     }
   else


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-06-16 13:46 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-16 13:46 [gcc(refs/vendors/ARM/heads/morello)] Rearrange extract_bit_field parameter order Richard Sandiford

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).