Side note..

By: Linus Torvalds (torvalds.delete@this.linux-foundation.org), April 21, 2012 2:57 pm
Room: Moderated Discussions
.. this was one of the things we did at Transmeta, and
that almost any x86 emulation JIT will do as the first
thing. Especially in a JIT, the eflags calculations are
often some of the more painful ones, because different
architectures tend to have so different models for flags,
and x86 has some of those odd ones, like the parity flag.

At TMTA, the hardware had support for the normal x86
flags for all the common operations, but even so, if you
want to re-order operations it makes it much easier if
you can rename the flags and throw away the writes to it
when they aren't necessary.

And quite often, the only eflags op that remains is for the
last one in a basic block. Because most x86 instructions
change all the arithmetic flags together.

The painful cases are the ones where you have to mix up
flags so that the outgoing value depends on the incoming
ones too. The obvious case for that is for things like
"add with carry", but the aforementioned inc/dec do it
too, since they only change a subset of the arithmetic
flags. And shifts with dynamic shift counts have some
nasty legacy behavior ("no change for count==0").

In hardware, I suspect the most reasonable approach is
to rename eflags (and likely split it into two or more
actual registers - things like the IF and AC flags have
little to do with the arithmetic flags).

In JIT's, it is probably easiest to just kill the redundant
writes entirely, usually together with recognizing special
patterns (especially compare/test to conditional branch),
and turning those into native sequences (so that the native
code tests the native flags, and the possible actual eflags
value generation is off that critical path).

Linus
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Phoronix tests GCC compiler flags and Bulldozer.I.S.T.2012/04/19 03:05 AM
  Single page view?David Kanter2012/04/19 08:59 AM
    Single page view?wainwright2012/04/19 09:22 AM
    Single page view?slothrop2012/04/19 09:23 AM
      Single page view?David Kanter2012/04/19 09:31 AM
        Single page view?EduardoS2012/04/19 03:12 PM
    Is there a single page view option for RWT articles?anon2012/04/19 09:27 AM
    Single page view?Del2012/04/19 09:36 AM
      Single page view?slacker2012/04/19 03:56 PM
        Single page view?Del2012/04/22 06:09 AM
          Single page view?David Kanter2012/04/22 09:38 AM
            Single page view?Del2012/04/23 01:22 AM
    Single page view?Michael S2012/04/19 01:30 PM
      Single page view?Ungo2012/04/19 02:25 PM
        Single page view?Foo_2012/04/20 12:17 AM
          Single page view?James2012/04/20 04:01 AM
            There are ads on the web?JJB2012/04/20 04:32 AM
              What a bunch of freeloaders (NT)slacker2012/04/20 01:44 PM
                So are you, probablyiz2012/04/21 04:41 AM
                  Impression ad revenuePaul A. Clayton2012/04/21 06:44 AM
                  So are you, probablyslacker2012/04/21 01:09 PM
                    So are you, probablyDavid Kanter2012/04/22 09:41 AM
                      So are you, probablyiz2012/04/22 03:57 PM
                    So are you, probablyDoug Siebert2012/04/22 12:37 PM
                      Aha!David Kanter2012/04/22 03:45 PM
                        Aha!bakaneko2012/04/22 08:49 PM
                    So are you, probablyiz2012/04/22 03:48 PM
                      That's not how the business works...David Kanter2012/04/22 05:31 PM
                        That's not how the business works...iz2012/04/23 01:49 AM
                      So are you, probablyslacker2012/04/22 11:31 PM
                        back to phoronixMichael S2012/04/23 02:07 AM
                        So are you, probablyiz2012/04/23 03:29 AM
                          Membership at RWTDavid Kanter2012/04/23 11:24 AM
                          So are you, probablyJukka Larja2012/04/27 08:59 AM
  So, what do people think of these numbers>I.S.T.2012/04/19 07:34 PM
    So, what do people think of these numbers>Linus Torvalds2012/04/20 08:34 AM
      So, what do people think of these numbers>Kira2012/04/20 09:18 AM
        So, what do people think of these numbers>Linus Torvalds2012/04/20 10:05 AM
      So, what do people think of these numbers>Doug Siebert2012/04/20 09:00 PM
      So, what do people think of these numbers>Megol2012/04/21 09:05 AM
        So, what do people think of these numbers>Linus Torvalds2012/04/21 01:11 PM
          Most problems are fixed...Megol2012/04/24 07:00 AM
    So, what do people think of these numbers>bakaneko2012/04/20 11:16 AM
      So, what do people think of these numbers>bakaneko2012/04/20 11:37 AM
        So, what do people think of these numbers>Linus Torvalds2012/04/20 01:24 PM
          So, what do people think of these numbers>Joel2012/04/20 02:59 PM
            So, what do people think of these numbers>Kira2012/04/20 03:32 PM
              So, what do people think of these numbers>EduardoS2012/04/20 04:00 PM
                Bulldozer's Oddities.Joel2012/04/20 04:54 PM
                  In defense of Bulldozer's OdditiesDavid Kanter2012/04/20 05:32 PM
                    In defense of Bulldozer's OdditiesExophase2012/04/20 07:11 PM
                      In defense of Bulldozer's OdditiesEduardoS2012/04/20 07:46 PM
                        In defense of Bulldozer's OdditiesExophase2012/04/20 08:18 PM
                          In defense of Bulldozer's Odditiesanonymous2012/04/20 11:26 PM
                            In defense of Bulldozer's OdditiesJJB2012/04/20 11:34 PM
                              In defense of Bulldozer's Odditiesimaxx2012/04/21 07:21 AM
                                In defense of Bulldozer's OdditiesMichael S2012/04/21 10:42 AM
                                  Bulldozer's integer execution unitsDavid Kanter2012/04/25 04:29 PM
                                    Bulldozer's integer execution unitsExophase2012/04/26 12:17 PM
                                      Bulldozer's integer execution unitsanonymous2012/04/26 03:15 PM
                                        Bulldozer's integer execution unitsEduardoS2012/04/26 03:40 PM
                                          Bulldozer's integer execution unitsFoo_2012/04/27 08:21 AM
                                            Bulldozer's integer execution unitsMegol2012/04/27 01:38 PM
                                      Bulldozer's integer execution unitsEduardoS2012/04/26 03:47 PM
                                        Bulldozer's integer execution unitsExophase2012/04/26 05:02 PM
                                          Bulldozer's integer execution unitsEduardoS2012/04/26 06:03 PM
                                            Bulldozer's integer execution unitsExophase2012/04/26 06:24 PM
                                              Bulldozer's integer execution unitsEduardoS2012/04/26 07:18 PM
                                                Bulldozer's cache memory performanceHeikki Kultala2012/04/28 01:18 AM
                                                  Bulldozer's cache memory performanceEduardoS2012/04/28 10:06 AM
                                      Bulldozer's integer execution unitsDavid Kanter2012/04/26 04:03 PM
                                        Bulldozer's integer execution unitsExophase2012/04/26 04:59 PM
                                          Bulldozer's integer execution unitsDavid Kanter2012/04/26 10:53 PM
                                            Bulldozer's integer execution unitsExophase2012/04/27 08:42 AM
                                              Bulldozer's integer execution unitsDavid Kanter2012/04/27 11:06 AM
                                                Bulldozer's integer execution unitsEduardoS2012/04/27 01:27 PM
                                                K8 divided pipelines?Paul A. Clayton2012/04/27 01:59 PM
                                          Bulldozer's integer execution unitsMichael S2012/04/27 04:37 AM
                                            Bulldozer's integer execution unitsExophase2012/04/27 08:33 AM
                                            Bulldozer's integer execution unitsanonymous2012/04/27 09:03 AM
                                    Renaming FlagsKonrad Schwarz2012/04/27 03:04 AM
                                      Renaming Flagsnone2012/04/27 04:03 AM
                                        Renaming FlagsMegol2012/04/27 12:42 PM
                                    Bulldozer's integer execution unitshcl642012/04/27 04:31 PM
                                      VEX supports 3+ operands. FPU have renaming already(NT)Megol2012/04/28 08:20 AM
                              In defense of Bulldozer's OdditiesLinus Torvalds2012/04/21 12:26 PM
                                Thanks for the lessonJJB2012/04/21 02:23 PM
                                  Side note..Linus Torvalds2012/04/21 02:57 PM
                            In defense of Bulldozer's OdditiesExophase2012/04/21 12:13 PM
                            In defense of Bulldozer's OdditiesEduardoS2012/04/21 12:53 PM
                    In defense of Bulldozer's OdditiesGionatan Danti2012/04/21 12:42 PM
                    In defense of Bulldozer's Odditieshcl642012/04/27 05:07 PM
                      In defense of Bulldozer's OdditiesDavid Kanter2012/04/28 06:29 AM
                        In defense of Bulldozer's Odditieshcl642012/04/28 02:44 PM
                          In defense of Bulldozer's OdditiesDavid Kanter2012/04/28 09:42 PM
                            In defense of Bulldozer's Odditieshcl642012/04/28 10:39 PM
                  Bulldozer's Oddities.EduardoS2012/04/20 06:05 PM
                    Bulldozer's Oddities.anon2012/04/20 08:32 PM
                      Bulldozer's Oddities.EduardoS2012/04/21 12:37 PM
                        Bulldozer's Oddities.anon2012/04/21 10:16 PM
                          Bulldozer's Oddities.EduardoS2012/04/21 10:43 PM
                            Bulldozer's Oddities.anon2012/04/22 02:09 AM
                              Bulldozer's Oddities.EduardoS2012/04/22 01:57 PM
                                Bulldozer's Oddities.anon2012/04/22 04:17 PM
                                  Bulldozer's Oddities.EduardoS2012/04/22 05:05 PM
                                    Bulldozer's Oddities.anon2012/04/22 05:42 PM
                                      Bulldozer's Oddities.anon2012/04/22 06:01 PM
                                      Bulldozer's Oddities.EduardoS2012/04/22 10:28 PM
                                        Bulldozer's Oddities.anon2012/04/22 11:05 PM
                  Bulldozer's isn't bad.a reader2012/04/21 10:01 AM
                    Bulldozer's isn't bad.Kira2012/04/21 11:29 AM
                      Bulldozer's isn't bad.hcl642012/04/27 05:58 PM
                        Bulldozer's isn't bad.anon2012/04/27 06:16 PM
                          Bulldozer's isn't bad.hcl642012/04/27 07:33 PM
                            Bulldozer's isn't bad.rwessel2012/04/27 11:12 PM
                        Bulldozer's isn't bad.EduardoS2012/04/28 09:29 AM
                          Bulldozer's isn't bad.EduardoS2012/04/28 09:30 AM
                          Bulldozer's isn't bad.Michael S2012/04/28 12:36 PM
                    Bulldozer is made for SPEC fpPelle-482012/04/21 11:41 AM
                  Bulldozer's Oddities.mpx2012/04/22 03:47 AM
                    Bulldozer's Oddities.EduardoS2012/04/22 01:57 PM
                      Bulldozer's Oddities.mpx2012/04/23 07:04 AM
                        Bulldozer's Oddities.Eric2012/04/23 12:33 PM
                          Bulldozer's Oddities.EduardoS2012/04/23 02:22 PM
                            Bulldozer's Oddities.Eric2012/04/23 07:30 PM
                              Bulldozer's Oddities.hcl642012/04/27 06:16 PM
                            Bulldozer's Oddities.Y2012/04/25 04:34 AM
                              Bulldozer's IDIVHeikki Kultala2012/04/27 10:56 PM
                                Bulldozer's IDIVY2012/04/30 01:51 AM
                                  Bulldozer's IDIVEduardoS2012/04/30 05:39 AM
                                    Bulldozer's IDIVP3Dnow2012/05/08 01:23 AM
                                      Bulldozer's IDIVExophase2012/05/08 07:37 AM
                        Bulldozer's Oddities.EduardoS2012/04/23 02:15 PM
              Clustered MT as SMT for high frequencyPaul A. Clayton2012/04/20 04:10 PM
                Clustered MT as SMT for high frequencyhcl642012/04/28 12:56 AM
                  Clustered MT as SMT for high frequencyanonymous2012/04/28 01:43 AM
                    Clustered MT as SMT for high frequencyhcl642012/04/28 02:59 PM
                      Clustered MT as SMT for high frequencyanonymous2012/04/28 08:45 PM
                  Clustered MT as SMT for high frequencyanon2012/04/28 02:13 AM
                    Clustered MT as SMT for high frequencyhcl642012/04/28 03:23 PM
                      Clustered MT as SMT for high frequencyanon2012/04/28 06:19 PM
                        Clustered MT as SMT for high frequencyhcl642012/04/28 07:58 PM
                  Clustered MT as SMT for high frequencyDavid Kanter2012/04/28 06:38 AM
                    Guessed meaning of "strong dependency model"Paul A. Clayton2012/04/28 07:24 AM
                      Guessed meaning of "strong dependency model"EduardoS2012/04/28 09:46 AM
                        *Right meaning* about "strong dependency model"hcl642012/04/28 04:59 PM
                    Clustered MT as SMT for high frequencyhcl642012/04/28 04:24 PM
                      Clustered MT as SMT for high frequencyanonymous2012/04/28 08:50 PM
                        Clustered MT as SMT for high frequencyhcl642012/04/28 09:47 PM
                          SNB widthDavid Kanter2012/04/28 09:48 PM
                            SNB widthhcl642012/04/29 02:24 AM
                      Clustered MT as SMT for high frequencyDavid Kanter2012/04/28 09:56 PM
                        Clustered MT as SMT for high frequencyhcl642012/04/28 11:44 PM
                          SOI, FD vs. PDDavid Kanter2012/04/29 07:19 AM
                            SOI, FD vs. PDhcl642012/04/29 05:31 PM
                              SOI, FD vs. PDDavid Kanter2012/04/29 11:26 PM
                                SOI, FD vs. PDhcl642012/04/30 08:08 AM
                                  SOI, FD vs. PDDavid Kanter2012/04/30 09:59 AM
                                    SOI, FD vs. PDhcl642012/04/30 06:10 PM
                                      SOI, FD vs. PDDavid Kanter2012/04/30 06:32 PM
                                        SOI, FD vs. PDhcl642012/04/30 10:47 PM
                                          SOI, FD vs. PDDavid Kanter2012/05/01 02:24 AM
                                            SOI, FD vs. PDhcl642012/05/01 05:46 AM
                                            SOI, FD vs. PDhcl642012/05/01 06:37 AM
                                              SOI, FD vs. PDDavid Kanter2012/05/01 08:19 AM
                                          SOI, FD vs. PDhcl642012/05/01 07:39 AM
                                            PD-SOIDavid Kanter2012/05/02 12:22 PM
                                    SOI, FD vs. PDslacker2012/04/30 08:10 PM
                                      SOI, FD vs. PDDavid Kanter2012/04/30 10:16 PM
                                        SOI, FD vs. PDslacker2012/05/01 10:04 PM
                                          SOI, FD vs. PDDavid Kanter2012/05/02 08:19 AM
                                            SOI, FD vs. PDzou2012/05/02 12:23 PM
                  Previous discussion of clustered MTPaul A. Clayton2012/04/28 07:00 AM
                    Previous discussion of clustered MThcl642012/04/28 09:38 PM
                      Previous discussion of clustered MTDavid Kanter2012/04/30 04:37 PM
                        Previous discussion of clustered MThcl642012/04/30 07:24 PM
                          Previous discussion of clustered MTDavid Kanter2012/04/30 07:40 PM
                            Previous discussion of clustered MThcl642012/05/01 09:15 AM
                              Latency issuesDavid Kanter2012/05/02 12:01 PM
              So, what do people think of these numbers>Megol2012/04/21 01:57 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell avocado?