This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[rx] adjust alignments for RX100/200 families


The RX100/200 families have 4 byte cache lines, vs 8 bytes for the
RX600 family.  Applied.

	* config/rx/rx.h (FUNCTION_BOUNDARY): Adjust for RX100/200 4-byte
	cache lines.
	* config/rx/rx.c (rx_option_override): Likewise.
	(rx_align_for_label): Likewise.

Index: config/rx/rx.h
===================================================================
--- config/rx/rx.h	(revision 211479)
+++ config/rx/rx.h	(working copy)
@@ -139,13 +139,13 @@
 #endif
 
 #define DEFAULT_SIGNED_CHAR		0
 
 /* RX load/store instructions can handle unaligned addresses.  */
 #define STRICT_ALIGNMENT 		0
-#define FUNCTION_BOUNDARY 		8
+#define FUNCTION_BOUNDARY 		((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 4 : 8)
 #define BIGGEST_ALIGNMENT 		32
 #define STACK_BOUNDARY 			32
 #define PARM_BOUNDARY 			8
 
 #define STACK_GROWS_DOWNWARD		1
 #define FRAME_GROWS_DOWNWARD		0
Index: config/rx/rx.c
===================================================================
--- config/rx/rx.c	(revision 211480)
+++ config/rx/rx.c	(working copy)
@@ -2789,17 +2789,17 @@ rx_option_override (void)
   if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
     flag_strict_volatile_bitfields = 1;
 
   rx_override_options_after_change ();
 
   if (align_jumps == 0 && ! optimize_size)
-    align_jumps = 3;
+    align_jumps = ((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 2 : 3);
   if (align_loops == 0 && ! optimize_size)
-    align_loops = 3;
+    align_loops = ((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 2 : 3);
   if (align_labels == 0 && ! optimize_size)
-    align_labels = 3;
+    align_labels = ((rx_cpu_type == RX100 || rx_cpu_type == RX200) ? 2 : 3);
 }
 
 
 static bool
 rx_allocate_stack_slots_for_args (void)
 {
@@ -3198,13 +3198,17 @@ rx_align_for_label (rtx lab, int uses_th
      because the delay due to the inserted NOPs would be greater than the delay
      due to the misaligned branch.  If uses_threshold is zero then the alignment
      is always useful.  */
   if (LABEL_P (lab) && LABEL_NUSES (lab) < uses_threshold)
     return 0;
 
-  return optimize_size ? 1 : 3;
+  if (optimize_size)
+    return 0;
+  if (rx_cpu_type == RX100 || rx_cpu_type == RX200)
+    return 2;
+  return 2;
 }
 
 static int
 rx_max_skip_for_label (rtx lab)
 {
   int opsize;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]