arithmetic/logic op fusion

By: Maynard Handley (, January 16, 2019 4:01 pm
Room: Moderated Discussions
My legions of fans (hah!) will know that one of my constant themes for future IPC boosts is more aggressive fusions. With that in mind, the following check-in to LLVM is rather interesting, capturing the largest easy pattern set that I think has been missing from discussions:

The author is on team Samsung, which suggests that it's either in M3 or scheduled for M4. Which (I expect) suggests that it's likely already in Apple. (Apple have long maintained their own private LLVM branch which stays in sync with the public branch, but which allows them to make these sorts of changes without the rest of us being able to learn anything :-( )

The immediate payoff from this sort of fusion is you avoid the intermediate register allocation which is already nice and all; but the even bigger win is if you use the fact that ALU logic is so shallow (compared to the harder steps in your pipeline) to double-pump the ALU and do both fused ops in a single cycle. It will be interesting to see if SS reveal anything around that at Hot Chips. (And, as usual, my guess is that if SS reveal they're doing it, that means it's both feasible and that Apple are likely already doing it.)
 Next Post in Thread >
TopicPosted ByDate
arithmetic/logic op fusionMaynard Handley2019/01/16 04:01 PM
  arithmetic/logic op fusionFoo_2019/01/17 07:03 AM
    arithmetic/logic op fusionRicardo B2019/01/17 08:00 AM
      You're right, I had misread (NT)Foo_2019/01/17 08:43 AM
  arithmetic/logic op fusiondmcq2019/01/17 08:51 AM
    arithmetic/logic op fusionMaynard Handley2019/01/17 10:24 AM
      arithmetic/logic op fusiondmcq2019/01/17 10:58 AM
        arithmetic/logic op fusionMaynard Handley2019/01/17 11:37 AM
          arithmetic/logic op fusiondmcq2019/01/17 05:00 PM
            arithmetic/logic op fusionMaynard Handley2019/01/17 07:42 PM
  arithmetic/logic op fusionanon2019/01/17 12:53 PM
    arithmetic/logic op fusionMaynard Handley2019/01/17 02:16 PM
    arithmetic/logic op fusionWilco2019/01/17 03:08 PM
  arithmetic/logic op fusionj2019/01/18 01:59 AM
    arithmetic/logic op fusionanon2019/01/18 07:34 AM
      arithmetic/logic op fusiondmcq2019/01/18 07:55 AM
    arithmetic/logic op fusionAnon2019/01/18 09:25 AM
    arithmetic/logic op fusionMaynard Handley2019/01/18 10:29 AM
      arithmetic/logic op fusiondmcq2019/01/18 11:42 AM
        arithmetic/logic op fusionMaynard Handley2019/01/18 12:44 PM
          arithmetic/logic op fusiondmcq2019/01/18 02:08 PM
        arithmetic/logic op fusionPaul A. Clayton2019/01/18 06:15 PM
          arithmetic/logic op fusionMaynard Handley2019/01/19 10:08 AM
            arithmetic/logic op fusiondmcq2019/01/19 11:14 AM
              arithmetic/logic op fusionMaynard Handley2019/01/19 11:53 AM
            Zero register as single use temporaryPaul A. Clayton2019/01/19 05:25 PM
              Zero register as single use temporaryMaynard Handley2019/01/19 05:56 PM
                AArch64 (and MY6600, I think) hide SP behind the zero register (NT)Paul A. Clayton2019/01/20 02:33 PM
      arithmetic/logic op fusionj2019/01/18 12:00 PM
        arithmetic/logic op fusionMaynard Handley2019/01/18 12:47 PM
        arithmetic/logic op fusionWilco2019/01/18 01:04 PM
Reply to this Topic
Body: No Text
How do you spell purple?