From: "H. Peter Anvin" <hpa@zytor.com>
To: Rask Ingemann Lambertsen <rask@sygehus.dk>
Cc: Uros Bizjak <ubizjak@gmail.com>,
GCC Patches <gcc-patches@gcc.gnu.org>,
Jan Hubicka <jh@suse.cz>,
Richard Kenner <kenner@vlsi1.ultra.nyu.edu>,
rridge@csclub.uwaterloo.ca
Subject: Re: New back end ia16: 16-bit Intel x86
Date: Sat, 18 Aug 2007 17:50:00 -0000 [thread overview]
Message-ID: <46C7306F.8040409@zytor.com> (raw)
In-Reply-To: <20070818171824.GV25795@sygehus.dk>
Rask Ingemann Lambertsen wrote:
>
> I'm only now realizing that the back end Daniel Verkamp and you are
> working on is strictly for i386+ code. Did you try tweaking things like
> TARGET_HIMODE_MATH, TARGET_PARTIAL_REG_STALL and such in the existing i386
> back end?
>
We haven't, no. In fact, adding in 386+ instructions was later
modifications. However, the application space we're targetting only
focus on 386 level (not 286, not 486) and size optimization.
Daniel spent some serious time early on messing with the i386 backend --
this was the original proposal -- but then decided that it was too
complicated; we adopted modifying DJ's backend as a fallback position.
Now, the *only* differences between 16-bit and 32-bit modes (on 32-bit
capable chips) are the relative cost of HImode vs SImode (in 16-bit
mode, HImode is by far cheaper in terms of code size) as well as the
totally different structure of the 16-bit addressing modes[1].
Adding 16-bit support to the existing backend would have the very nice
feature, of course, of benefitting from the huge amount of work that
goes into it, but it also means that destabilizing or slowing down the
existing code in any way is utterly unacceptable. For doing a separate
backend, focusing only on code size optimizations makes a big difference
-- no need to do any kind of pipeline stall modelling, for example.
-hpa
[1] for non-x86 folk: in 32-bit mode, an address is
base+index*scale+offset (with any part optional); any register is valid
for base and index. In 16-bit mode, there is no scale, and only %bx and
%bp are valid for base, %si and %di for index. As a result, in 16-bit
mode, %bx is usually call-clobbered whereas in 32-bit mode, %ebx is
call-saved. It is also much harder to eliminate the frame pointer in
16-bit mode, since there is no %sp-based addressing at all.
next prev parent reply other threads:[~2007-08-18 17:46 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-06 14:23 Uros Bizjak
2007-08-07 1:29 ` Rask Ingemann Lambertsen
2007-08-07 17:37 ` Daniel Jacobowitz
2007-08-07 20:03 ` Uros Bizjak
2007-08-08 12:21 ` Jan Hubicka
2007-08-08 17:30 ` Mark Mitchell
2007-08-08 23:22 ` Richard Kenner
2007-08-08 18:52 ` Rask Ingemann Lambertsen
2007-08-08 20:24 ` Michael Matz
2007-08-08 20:59 ` H.J. Lu
2007-08-08 22:46 ` DJ Delorie
2007-08-09 9:33 ` Jan Hubicka
2007-08-09 14:01 ` Rask Ingemann Lambertsen
2007-08-09 15:43 ` DJ Delorie
2007-08-08 15:28 ` Rask Ingemann Lambertsen
2007-08-17 22:38 ` H. Peter Anvin
2007-08-18 2:34 ` Rask Ingemann Lambertsen
2007-08-18 5:33 ` H. Peter Anvin
2007-08-18 17:36 ` Rask Ingemann Lambertsen
2007-08-18 17:50 ` H. Peter Anvin [this message]
2007-08-18 20:39 ` Rask Ingemann Lambertsen
2007-08-19 2:11 ` H. Peter Anvin
2007-08-19 12:25 ` Rask Ingemann Lambertsen
2007-08-19 20:07 ` H. Peter Anvin
2007-08-21 8:48 ` H. Peter Anvin
2007-08-21 14:35 ` Rask Ingemann Lambertsen
2007-08-21 17:46 ` H. Peter Anvin
2007-08-21 18:56 ` Real-mode i386 back end (Was: New back end ia16: 16-bit Intel x86) Rask Ingemann Lambertsen
2007-08-19 7:29 ` New back end ia16: 16-bit Intel x86 H. Peter Anvin
2007-08-19 10:56 ` Rask Ingemann Lambertsen
2007-08-19 21:40 ` H. Peter Anvin
-- strict thread matches above, loose matches on Subject: below --
2007-08-19 19:58 Ross Ridge
2007-08-19 16:11 Ross Ridge
2007-08-19 17:36 ` Rask Ingemann Lambertsen
2007-08-18 20:46 Ross Ridge
2007-08-19 16:20 ` Rask Ingemann Lambertsen
2007-08-02 20:15 Ross Ridge
2007-08-01 19:25 Ross Ridge
2007-08-01 22:57 ` Rask Ingemann Lambertsen
[not found] <20070801153758.ACBB974253@caffeine.csclub.uwaterloo.ca.suse.lists.egcs-patches>
2007-08-01 17:44 ` Andi Kleen
2007-08-01 15:38 Ross Ridge
2007-08-01 17:59 ` Rask Ingemann Lambertsen
2007-07-31 18:06 Ross Ridge
2007-08-01 0:34 ` Rask Ingemann Lambertsen
2007-08-01 9:53 ` Richard Kenner
2007-08-01 12:33 ` Rask Ingemann Lambertsen
2007-08-01 12:44 ` Richard Kenner
2007-08-01 13:41 ` Rask Ingemann Lambertsen
2007-08-01 13:52 ` Richard Kenner
2007-08-01 10:38 ` Jan Hubicka
2007-08-01 17:30 ` Rask Ingemann Lambertsen
2007-07-31 15:24 Ross Ridge
2007-07-31 17:44 ` Michael Matz
2007-07-31 0:50 Ross Ridge
2007-07-31 8:54 ` Tristan Gingold
2007-07-31 13:46 ` Rask Ingemann Lambertsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46C7306F.8040409@zytor.com \
--to=hpa@zytor.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=jh@suse.cz \
--cc=kenner@vlsi1.ultra.nyu.edu \
--cc=rask@sygehus.dk \
--cc=rridge@csclub.uwaterloo.ca \
--cc=ubizjak@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).