- User Since
- Nov 19 2016, 5:25 PM (86 w, 6 d)
- ASSERT that comparisons have been swapped as expected.
- Fix a leftover GTT/GE mixup.
x < y == y > x instead of x < y == y >= x.
Thu, Jul 19
At least imaginary/paraffins is still wrong with this patch.
Sun, Jul 15
- Allow to dynamically specify cfg weights for benchmarking (temporary)
Thu, Jul 12
- Trim edges in chain linking passes.
- Explain branch weights, add backedge detection.
- Refactor where we look for loops
- Refactor some aspects of the layout algorithm and code.
- Change CFG weights, refactor CFG creation slightly.
- Ignore info tables
- Use edge weights for old algorithm too
Tue, Jul 10
Mon, Jul 9
- Remove redundant import(s)
- Replace a few more foldl instances.
- Use X namespace in GhcPrelude
- Incorporate phab feedback
Fri, Jul 6
I tried adding the Length, Width and data type information without keeping it a Maybe but it was proving to be almost impossible.
Wed, Jul 4
I plan to address the inline notes and incorporate the changes from the other foldl' patch.
Tue, Jul 3
- Remove redundant import
Mon, Jul 2
Sun, Jul 1
- Remove unused import
and as soon as I get the time I will look at the liveliness analysis. I find it highly unlikely that simple Cabal function requires ~2200 spill slots.
Sat, Jun 30
Thu, Jun 28
Fri, Jun 22
I've run nofib on a Xeon E3-1220 which jmct has provided me for a bench build and the results seem to hold up.
Thu, Jun 21
Jun 21 2018
Jun 20 2018
Abandoned in favour of D4879.
- Revert back to using a fold for list insertion
Jun 19 2018
Jun 15 2018
Jun 14 2018
[14-Jun-18 16:07:59] <sjakobi> With the strictness changes in UniqFM, I'm actually getting a few "stat not good enough" failures for
[14-Jun-18 16:07:59] <sjakobi> TEST="T12227 T12545 T3064 T5030 T5321Fun T5631 T9872a T9872b T9872c"
This currently increases allocation. sjakobi was so nice to upload the patch so I can check why.
More things to consider:
- CMOV doesn't support 8 bit operands.
- CMOV with a memory address does NOT perform a conditional load. But a load followed from a conditional move.
- Some simple cases could be better encoded using things like setcc.
Jun 13 2018
Seems I was a bit sloppy with updating the docs when I extended rtsopts thanks a lot for cleaning this up!
Jun 12 2018
- Allocations are still far too high so there is some need for optimization.
- Currently only deals with integer conditions
- Assignments which read from memory should be directly translated to cmovs. Currently they also require an intermediate register.
- Some refactoring.
- Also tackle branching code where one branch is empty.
- Refactor CmmCondAssign type.
There is a bit of noise in the results but here are the nofib measurements.
Individual benchmarks listed are these where cmov was generated and
it made a difference.
Jun 11 2018
I don't feel strong about this either way.
But I think we should either dump this with verbose,
or otherwise change the userguide to mention the fact that there is another pass which isn't dumped.
Assuming all changes in here are also in the other diff you could abandon this one to make it clear.
Jun 10 2018
It's nice how much duplication disappeared with that change. Good job :)
Jun 9 2018
Jun 8 2018
Jun 7 2018
Jun 6 2018
Jun 4 2018
I think it would make sense to make VecFormat an Constructor of Format instead of it's own type.
Jun 2 2018
- Check for singletons in listToBag as well.
Jun 1 2018
- Trim edges in chain linking passes.
May 31 2018
- Rely on grep exit status instead of wc in test.
May 30 2018
- Update expression name
- Performance improvements
May 29 2018
- Only look at reachable graphs when constructing the CFG.
- Import cleanup.
May 28 2018
- Resubmmit the patch. Overwrote this one with another branch by mistake.
Keep CFG around in NatM state and update it during codegen.
- Add test case