2005-03-28  David Mosberger  <davidm@hpl.hp.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	PR 803
	NEWS: Mention "-mtune=[itanium1|itanium2]".

	* config/tc-ia64.c (md): Add tune.
	(md_parse_option): Accepted "-mtune=[itanium1|itanium2]".
	(md_show_usage): Add "-mtune=[itanium1|itanium2]".
	(extra_goodness): Prefer M- and I-unit NOPs for itanium2. F and
	B unit NOPs are discouraged for McKinley-derived cores.
	(md_begin): Don't hardcode the "extra_goodness()" function in
	the comment...
	(ia64_init): Set md.tune to itanium2.

	* doc/as.texinfo: Add -mtune=[itanium1|itanium2]".
	* doc/c-ia64.texi: Likewise.

gas/testsuite/

2005-03-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR 803
	* gas/ia64/dv-imply.d: Pass -mtune=itanium1 to as.
	* gas/ia64/dv-mutex.d : Likewise.
	* gas/ia64/dv-safe.d: Likewise.
	* gas/ia64/dv-srlz.d.nop: Likewise.
	* gas/ia64/ldxmov-1.d: Likewise.
	* gas/ia64/opc-b.d: Likewise.
	* gas/ia64/opc-f.d: Likewise.
	* gas/ia64/opc-i.d: Likewise.
	* gas/ia64/opc-m.d: Likewise.
	* gas/ia64/operand-or.d: Likewise.
	* gas/ia64/pcrel.d: Likewise.
	* gas/ia64/pseudo.d: Likewise.
	* gas/ia64/tls.d: Likewise.

ld/testsuite/

2005-03-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR 803
	* ld-ia64/ia64.exp: Pass -mtune=itanium1 to as.
This commit is contained in:
H.J. Lu 2005-03-28 22:34:20 +00:00
parent 6d1eba4cf3
commit 8c2fda1d2b
21 changed files with 110 additions and 22 deletions

View file

@ -1,3 +1,21 @@
2005-03-28 David Mosberger <davidm@hpl.hp.com>
H.J. Lu <hongjiu.lu@intel.com>
PR 803
NEWS: Mention "-mtune=[itanium1|itanium2]".
* config/tc-ia64.c (md): Add tune.
(md_parse_option): Accepted "-mtune=[itanium1|itanium2]".
(md_show_usage): Add "-mtune=[itanium1|itanium2]".
(extra_goodness): Prefer M- and I-unit NOPs for itanium2. F and
B unit NOPs are discouraged for McKinley-derived cores.
(md_begin): Don't hardcode the "extra_goodness()" function in
the comment...
(ia64_init): Set md.tune to itanium2.
* doc/as.texinfo: Add -mtune=[itanium1|itanium2]".
* doc/c-ia64.texi: Likewise.
2005-03-27 Ian Lance Taylor <ian@airs.com>
* config/obj-coff.c (coff_frob_symbol): When crashing because of a

View file

@ -1,5 +1,7 @@
-*- text -*-
* New command line option -mtune=[itanium1|itanium2] for IA64 targets.
Changes in 2.16:
* Redefinition of macros now results in an error.

View file

@ -229,6 +229,13 @@ static struct
that are predicatable. */
expressionS qp;
/* Optimize for which CPU. */
enum
{
itanium1,
itanium2
} tune;
/* What to do when hint.b is used. */
enum
{
@ -6957,6 +6964,16 @@ md_parse_option (c, arg)
else
return 0;
}
else if (strncmp (arg, "tune=", 5) == 0)
{
arg += 5;
if (strcmp (arg, "itanium1") == 0)
md.tune = itanium1;
else if (strcmp (arg, "itanium2") == 0)
md.tune = itanium2;
else
return 0;
}
else
return 0;
break;
@ -7069,6 +7086,8 @@ IA-64 options:\n\
EF_IA_64_NOFUNCDESC_CONS_GP)\n\
-milp32|-milp64|-mlp64|-mp64 select data model (default -mlp64)\n\
-mle | -mbe select little- or big-endian byte order (default -mle)\n\
-mtune=[itanium1|itanium2]\n\
tune for a specific CPU (default -mtune=itanium2)\n\
-munwind-check=[warning|error]\n\
unwind directive check (default -munwind-check=warning)\n\
-mhint.b=[ok|warning|error]\n\
@ -7122,11 +7141,30 @@ match (int templ, int type, int slot)
static inline int
extra_goodness (int templ, int slot)
{
if (slot == 1 && match (templ, IA64_TYPE_F, slot))
return 2;
if (slot == 2 && match (templ, IA64_TYPE_B, slot))
return 1;
return 0;
switch (md.tune)
{
case itanium1:
if (slot == 1 && match (templ, IA64_TYPE_F, slot))
return 2;
else if (slot == 2 && match (templ, IA64_TYPE_B, slot))
return 1;
else
return 0;
break;
case itanium2:
if (match (templ, IA64_TYPE_M, slot)
|| match (templ, IA64_TYPE_I, slot))
/* Favor M- and I-unit NOPs. We definitely want to avoid
F-unit and B-unit may cause split-issue or less-than-optimal
branch-prediction. */
return 2;
else
return 0;
break;
default:
abort ();
return 0;
}
}
/* This function is called once, at assembler startup time. It sets
@ -7222,10 +7260,9 @@ md_begin ()
&zero_address_frag);
/* Compute the table of best templates. We compute goodness as a
base 4 value, in which each match counts for 3, each F counts
for 2, each B counts for 1. This should maximize the number of
F and B nops in the chosen bundles, which is good because these
pipelines are least likely to be overcommitted. */
base 4 value, in which each match counts for 3. Match-failures
result in NOPs and we use extra_goodness() to pick the execution
units that are best suited for issuing the NOP. */
for (i = 0; i < IA64_NUM_TYPES; ++i)
for (j = 0; j < IA64_NUM_TYPES; ++j)
for (k = 0; k < IA64_NUM_TYPES; ++k)
@ -7426,6 +7463,7 @@ ia64_init (argc, argv)
/* FIXME: We should change it to unwind_check_error someday. */
md.unwind_check = unwind_check_warning;
md.hint_b = hint_b_error;
md.tune = itanium2;
}
/* Return a string for the target object file format. */

View file

@ -315,6 +315,7 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
[@b{-mconstant-gp}|@b{-mauto-pic}]
[@b{-milp32}|@b{-milp64}|@b{-mlp64}|@b{-mp64}]
[@b{-mle}|@b{mbe}]
[@b{-mtune=itanium1}|@b{-mtune=itanium2}]
[@b{-munwind-check=warning}|@b{-munwind-check=error}]
[@b{-mhint.b=ok}|@b{-mhint.b=warning}|@b{-mhint.b=error}]
[@b{-x}|@b{-xexplicit}] [@b{-xauto}] [@b{-xdebug}]

View file

@ -65,6 +65,11 @@ These options select the byte order. The @code{-mle} option selects little-endi
byte order (default) and @code{-mbe} selects big-endian byte order. Note that
IA-64 machine code always uses little-endian byte order.
@item -mtune=itanium1
@item -mtune=itanium2
Tune for a particular IA-64 CPU, @var{itanium1} or @var{itanium2}. The
default is @var{itanium2}.
@item -munwind-check=warning
@item -munwind-check=error
These options control what the assembler will do when performing

View file

@ -1,3 +1,20 @@
2005-03-28 H.J. Lu <hongjiu.lu@intel.com>
PR 803
* gas/ia64/dv-imply.d: Pass -mtune=itanium1 to as.
* gas/ia64/dv-mutex.d : Likewise.
* gas/ia64/dv-safe.d: Likewise.
* gas/ia64/dv-srlz.d.nop: Likewise.
* gas/ia64/ldxmov-1.d: Likewise.
* gas/ia64/opc-b.d: Likewise.
* gas/ia64/opc-f.d: Likewise.
* gas/ia64/opc-i.d: Likewise.
* gas/ia64/opc-m.d: Likewise.
* gas/ia64/operand-or.d: Likewise.
* gas/ia64/pcrel.d: Likewise.
* gas/ia64/pseudo.d: Likewise.
* gas/ia64/tls.d: Likewise.
2005-03-24 Hans-Peter Nilsson <hp@axis.com>
* gas/cris/range-err-1.s: Adjust expected messages for hosts with

View file

@ -1,4 +1,4 @@
# as: -xexplicit
# as: -xexplicit -mtune=itanium1
# objdump: -d
# name ia64 dv-mutex

View file

@ -1,4 +1,4 @@
# as: -xexplicit
# as: -xexplicit -mtune=itanium1
# objdump: -d
# name ia64 dv-mutex

View file

@ -1,4 +1,4 @@
# as: -xexplicit
# as: -xexplicit -mtune=itanium1
# objdump: -d
# name ia64 dv-safe

View file

@ -1,4 +1,4 @@
# as: -xauto
# as: -xauto -mtune=itanium1
# objdump: -d
# name ia64 dv-srlz

View file

@ -1,3 +1,4 @@
#as: -mtune=itanium1
#objdump: -dr
#name: ia64 ldxmov-1

View file

@ -1,4 +1,4 @@
#as: -xnone -mhint.b=ok
#as: -xnone -mhint.b=ok -mtune=itanium1
#objdump: -d
#name: ia64 opc-b

View file

@ -1,4 +1,4 @@
# as: -xnone
# as: -xnone -mtune=itanium1
# objdump: -d --disassemble-zeroes
# name: ia64 opc-f

View file

@ -1,4 +1,4 @@
# as: -xnone
# as: -xnone -mtune=itanium1
# objdump: -d
# name: ia64 opc-i

View file

@ -1,4 +1,4 @@
# as: -xnone
# as: -xnone -mtune=itanium1
# objdump: -d
# name: ia64 opc-m

View file

@ -1,4 +1,4 @@
# as: -xnone
# as: -xnone -mtune=itanium1
# objdump: -d --disassemble-zeroes
# name: ia64 operand-or

View file

@ -1,3 +1,4 @@
#as: -mtune=itanium1
#objdump: -rs
#name: ia64 pcrel

View file

@ -1,4 +1,4 @@
# as: -xnone
# as: -xnone -mtune=itanium1
# objdump: -d
# name: ia64 pseudo-ops

View file

@ -1,4 +1,4 @@
#as: -xnone
#as: -xnone -mtune=itanium1
#objdump: -dr
#name: ia64 tls

View file

@ -1,3 +1,8 @@
2005-03-28 H.J. Lu <hongjiu.lu@intel.com>
PR 803
* ld-ia64/ia64.exp: Pass -mtune=itanium1 to as.
2005-03-24 Mark Mitchell <mark@codesourcery.com>
* config/default.exp: Do not load libpath.exp if it does not

View file

@ -35,14 +35,14 @@ if { !([istarget "ia64-*-elf*"]
set ia64tests {
{"TLS -fpic -shared" "-shared"
"" {tlspic1.s tlspic2.s}
"-mtune=itanium1" {tlspic1.s tlspic2.s}
{{readelf -WSsrl tlspic.rd} {objdump -drj.text tlspic.dd}
{objdump -sj.got tlspic.sd} {objdump -sj.tdata tlspic.td}}
"libtlspic.so"}
{"Helper shared library" "-shared"
"" {tlslib.s} {} "libtlslib.so"}
{"TLS -fpic and -fno-pic exec"
"tmpdir/libtlslib.so" "" {tlsbinpic.s tlsbin.s}
"tmpdir/libtlslib.so" "-mtune=itanium1" {tlsbinpic.s tlsbin.s}
{{readelf -WSsrl tlsbin.rd} {objdump -drj.text tlsbin.dd}
{objdump -sj.got tlsbin.sd} {objdump -sj.tdata tlsbin.td}}
"tlsbin"}