This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC PATCH, i386]: Fuse compare and branch macro-ops for Core2
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Paolo Bonzini <bonzini at gnu dot org>
- Cc: Uros Bizjak <ubizjak at gmail dot com>, GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 17 Mar 2008 16:41:09 +0100
- Subject: Re: [RFC PATCH, i386]: Fuse compare and branch macro-ops for Core2
- References: <47DD11F7.700@gmail.com> <47DD5434.1020000@gnu.org>
> Uros Bizjak wrote:
> >Hello!
> >
> >This experimental patch is based on the Chapter 7.5, "Macro-op fusion"
> >of [1], where it is stated that when a bunch of condition is satisfied,
> >Core2 fuses compare and branch instruction into one macro-uop. This
> >functionality is limited to 32bit executables only.
> >
> >Attached patch increases fusion opportunities by keeping unsigned
> >compares together with their follow-up branch instruction, while trying
> >to align combined sequence to keep branch insn from crossing 16-byte
> >boundary.
>
> I think you should instead try converting the back-end to cbranch
> patterns (which you can split if worthwhile for scheduling).
Also note that the 16-byte boundary crossing has interesting effect on
Athlon decoders and ordinary instructions. Long time ago I implemented
patch to allow specifying alignment of instructions and use .p2align to
avoid those "bad crossings of boundary". I shoud be able to dig it out
if you are interested.
Honza
>
> Paolo