View | Details | Raw Unified | Return to bug 26083
Collapse All | Expand All

(-)invoke.texi (+18 lines)
Lines 380-385 Link Here
380
-mcpu=@var{cpu type}
380
-mcpu=@var{cpu type}
381
-mbwx -mno-bwx -mcix -mno-cix -mmax -mno-max
381
-mbwx -mno-bwx -mcix -mno-cix -mmax -mno-max
382
-mmemory-latency=@var{time}
382
-mmemory-latency=@var{time}
383
-malign-jumps=@var{num}  -malign-loops=@var{num}
384
-malign-functions=@var{num}
383
385
384
@emph{Clipper Options}
386
@emph{Clipper Options}
385
-mc300  -mc400
387
-mc300  -mc400
Lines 5703-5708 Link Here
5703
Note that L3 is only valid for EV5.
5705
Note that L3 is only valid for EV5.
5704
5706
5705
@end table
5707
@end table
5708
5709
@item -malign-loops=@var{num}
5710
Align loops to a 2 raised to a @var{num} byte boundary.  If
5711
@samp{-malign-loops} is not specified, the default is 4 (16 bytes)
5712
if optimising unless ECOFF symbols are selected, otherwise no
5713
additional alignment is used.
5714
5715
@item -malign-jumps=@var{num}
5716
Align instructions that are only jumped to to a 2 raised to a @var{num}
5717
byte boundary.  If @samp{-malign-jumps} is not specified, the default is
5718
4 (16 bytes) if optimising unless ECOFF symbols are selected, otherwise no
5719
additional alignment is used.
5720
5721
@item -malign-functions=@var{num}
5722
Align the start of functions to a 2 raised to @var{num} byte boundary.
5723
If @samp{-malign-functions} is not specified, the default is 5 (32 bytes).
5706
@end table
5724
@end table
5707
5725
5708
@node Clipper Options
5726
@node Clipper Options
(-)config/alpha/alpha.c (+48 lines)
Lines 75-80 Link Here
75
const char *alpha_fptm_string;	/* -mfp-trap-mode=[n|u|su|sui] */
75
const char *alpha_fptm_string;	/* -mfp-trap-mode=[n|u|su|sui] */
76
const char *alpha_mlat_string;	/* -mmemory-latency= */
76
const char *alpha_mlat_string;	/* -mmemory-latency= */
77
77
78
/* Alignment to use for functions, loops and jumps:  */
79
80
/* Power of two alignment for functions. */
81
int alpha_align_funcs;
82
const char *alpha_align_funcs_string;
83
84
/* Power of two alignment for loops. */
85
int alpha_align_loops;
86
const char *alpha_align_loops_string;
87
88
/* Power of two alignment for non-loop jumps. */
89
int alpha_align_jumps;
90
const char *alpha_align_jumps_string;
91
78
/* Save information from a "cmpxx" operation until the branch or scc is
92
/* Save information from a "cmpxx" operation until the branch or scc is
79
   emitted.  */
93
   emitted.  */
80
94
Lines 320-325 Link Here
320
334
321
  /* Acquire a unique set number for our register saves and restores.  */
335
  /* Acquire a unique set number for our register saves and restores.  */
322
  alpha_sr_alias_set = new_alias_set ();
336
  alpha_sr_alias_set = new_alias_set ();
337
338
  /* Validate -malign-loops= value, or provide default.
339
340
   ??? The default is no alignment if we don't optimize and also if we
341
   are writing ECOFF symbols to work around a bug in DEC's assembler,
342
   otherwise we use octaword alignment.
343
 */
344
345
  alpha_align_loops = (optimize > 0 && write_symbols != SDB_DEBUG ? 4 : 0);
346
  if (alpha_align_loops_string)
347
    {
348
      alpha_align_loops = atoi (alpha_align_loops_string);
349
      if (alpha_align_loops < 2 || alpha_align_loops > 6)
350
	fatal ("-malign-loops=%d is not between 2 and 6", alpha_align_loops);
351
    }
352
353
  /* Validate -malign-jumps= value, or provide default.  */
354
  alpha_align_jumps = (optimize > 0 && write_symbols != SDB_DEBUG ? 4 : 0);
355
  if (alpha_align_jumps_string)
356
    {
357
      alpha_align_jumps = atoi (alpha_align_jumps_string);
358
      if (alpha_align_jumps < 2 || alpha_align_jumps > 6)
359
	fatal ("-malign-jumps=%d is not between 2 and 6", alpha_align_jumps);
360
    }
361
362
  /* Validate -malign-functions= value, or provide default. */
363
  alpha_align_funcs = 5;		/* default is 32-byte boundary */
364
  if (alpha_align_funcs_string)
365
    {
366
      alpha_align_funcs = atoi (alpha_align_funcs_string);
367
      if (alpha_align_funcs < 2 || alpha_align_funcs > 6)
368
	fatal ("-malign-functions=%d is not between 2 and 6",
369
		alpha_align_funcs);
370
    }
323
}
371
}
324
372
325
/* Returns 1 if VALUE is a mask that contains full bytes of zero or ones.  */
373
/* Returns 1 if VALUE is a mask that contains full bytes of zero or ones.  */
(-)config/alpha/alpha.h (-16 / +20 lines)
Lines 243-248 Link Here
243
extern const char *alpha_fptm_string;	/* For -mfp-trap-mode=[n|u|su|sui]  */
243
extern const char *alpha_fptm_string;	/* For -mfp-trap-mode=[n|u|su|sui]  */
244
extern const char *alpha_tp_string;	/* For -mtrap-precision=[p|f|i] */
244
extern const char *alpha_tp_string;	/* For -mtrap-precision=[p|f|i] */
245
extern const char *alpha_mlat_string;	/* For -mmemory-latency= */
245
extern const char *alpha_mlat_string;	/* For -mmemory-latency= */
246
extern const char *alpha_align_loops_string;	/* For -malign-loops= */
247
extern const char *alpha_align_jumps_string;	/* For -malign-jumps= */
248
extern const char *alpha_align_funcs_string;	/* For -malign-functions= */
246
249
247
#define TARGET_OPTIONS					\
250
#define TARGET_OPTIONS					\
248
{							\
251
{							\
Lines 256-261 Link Here
256
   "Control the precision given to fp exceptions"},	\
259
   "Control the precision given to fp exceptions"},	\
257
  {"memory-latency=",	&alpha_mlat_string,		\
260
  {"memory-latency=",	&alpha_mlat_string,		\
258
   "Tune expected memory latency"},			\
261
   "Tune expected memory latency"},			\
262
  { "align-loops=",	&alpha_align_loops_string, 	\
263
    "Loop code aligned to this power of 2" },		\
264
  { "align-jumps=",	&alpha_align_jumps_string,	\
265
    "Jump targets are aligned to this power of 2" },	\
266
  { "align-functions=",	&alpha_align_funcs_string,	\
267
    "Function starts are aligned to this power of 2" },	\
259
}
268
}
260
269
261
/* Attempt to describe CPU characteristics to the preprocessor.  */
270
/* Attempt to describe CPU characteristics to the preprocessor.  */
Lines 475-481 Link Here
475
#define STACK_BOUNDARY 64
484
#define STACK_BOUNDARY 64
476
485
477
/* Allocation boundary (in *bits*) for the code of a function.  */
486
/* Allocation boundary (in *bits*) for the code of a function.  */
478
#define FUNCTION_BOUNDARY 256
487
extern int alpha_align_funcs;	/* power of two alignment for functions */
488
#define FUNCTION_BOUNDARY (1 << (alpha_align_funcs + 3))
479
489
480
/* Alignment of field after `int : 0' in a structure.  */
490
/* Alignment of field after `int : 0' in a structure.  */
481
#define EMPTY_FIELD_BOUNDARY 64
491
#define EMPTY_FIELD_BOUNDARY 64
Lines 486-506 Link Here
486
/* A bitfield declared as `int' forces `int' alignment for the struct.  */
496
/* A bitfield declared as `int' forces `int' alignment for the struct.  */
487
#define PCC_BITFIELD_TYPE_MATTERS 1
497
#define PCC_BITFIELD_TYPE_MATTERS 1
488
498
489
/* Align loop starts for optimal branching.  
499
/* Align loop starts for optimal branching.  */
490
500
extern int alpha_align_loops;		/* power of two alignment for loops */
491
   ??? Kludge this and the next macro for the moment by not doing anything if
501
#define LOOP_ALIGN(LABEL) (alpha_align_loops)
492
   we don't optimize and also if we are writing ECOFF symbols to work around
502
493
   a bug in DEC's assembler. */
503
/* This is how to align an instruction for optimal branching.
494
504
   On Alpha, we should get better performance by aligning to an
495
#define LOOP_ALIGN(LABEL) \
505
   octaword (16 byte) boundary.  */
496
  (optimize > 0 && write_symbols != SDB_DEBUG ? 4 : 0)
506
extern int alpha_align_jumps;		/* power of two alignment for jumos */
497
507
#define LABEL_ALIGN_AFTER_BARRIER(LABEL) (alpha_align_jumps)
498
/* This is how to align an instruction for optimal branching.  On
499
   Alpha we'll get better performance by aligning on an octaword
500
   boundary.  */
501
502
#define LABEL_ALIGN_AFTER_BARRIER(FILE)	\
503
  (optimize > 0 && write_symbols != SDB_DEBUG ? 4 : 0)
504
508
505
/* No data type wants to be aligned rounder than this.  */
509
/* No data type wants to be aligned rounder than this.  */
506
#define BIGGEST_ALIGNMENT 64
510
#define BIGGEST_ALIGNMENT 64

Return to bug 26083