1. 30 Mar, 2021 1 commit
  2. 29 Mar, 2021 1 commit
    • Cyril SIX's avatar
      Simplifications on Linearize - details below · 67cfb5b6
      Cyril SIX authored
      While I was developing the new trace linearize, I started off with
      implementing a big algorithm reasoning on dependencies etc.., but I
      realized later that it was giving a too different performance (sometimes
      better, sometimes worst) than the original CompCert. So I
      stripped it off gradually until its performance (on regular code with
      just branch prediction) was on par with the base Linearize of CompCert.
      I was aiming here for something that is either equal, or better, in
      terms of performance.
      My (then and current) theory is that I have stripped it out so much that
      now it's just like the algorithm of CompCert, but with a modification
      for Lcond instructions (see the new linearize_aux_cb). However, I never
      tested that theory: the code worked, so I left it as is, without any
      simplification. But now that I need to get a clear version for my
      manuscript, I'm digging into it.
      It turns out my theory is not really exact.
      A difference is that instead of taking the minpc across the chain, I take
      the pc of the very first block of the chain I create. This was (I think)
      out of laziness in the middle of two iterations, except that I forgot
      about it.
      I tested my new theory by deleting all the stuff about dependencies
      calculation (commited), and also computing a minpc just like original
      compcert (not commited): I get the same exact Mach code than
      So right now, the only difference between linearize_aux_cb and
      linearize_aux_trace is that slightly different minpc computation.
      I think transitionning to linearize_aux_cb will be 1) much clearer than
      this Frankenstein monster of linearize_aux_trace that I made, and 2)
      might be better performing too.
      I don't have access to Kalray machines today so i'm leaving this on hold
      for now, but tomorrow I will test performance wise to see if there is a
      regression. If there isn't, I will commit this (and it will be the
      version narrated by my manuscript).
      If there is a regression, it would mean selecting the pc of the first
      node (in opposition to the minpc) is more performant, so i'd backtrack
      the change to linearize_aux_cb anyway and there should then be 0
      difference in the generated code.
  3. 26 Jan, 2021 3 commits
  4. 25 Jan, 2021 2 commits
  5. 22 Jan, 2021 1 commit
  6. 21 Jan, 2021 1 commit
  7. 20 Jan, 2021 4 commits
  8. 19 Jan, 2021 1 commit
  9. 14 Jan, 2021 5 commits
  10. 08 Jan, 2021 1 commit
  11. 07 Jan, 2021 11 commits
  12. 06 Jan, 2021 2 commits
  13. 04 Jan, 2021 2 commits
  14. 20 Dec, 2020 4 commits
  15. 19 Dec, 2020 1 commit