summaryrefslogtreecommitdiff
path: root/chapter20
Commit message (Collapse)AuthorAgeFilesLines
* Backport some minor speedupsCliff Click4 days4-18/+77
|
* Remove _phase checks from Arith & ComputeCliff Click4 days5-0/+73
| | | | Fix some monotonicty bugs, rounding bugs, in float ops
* Fix bugs x86 storing only 32bits of a large constantCliff Click4 days2-1/+36
| | | | Missed field narrowing in a few cases
* Backport a bunch of fixesCliff Click5 days4-6/+45
| | | | | | ARM encoding Extra fidx burned with no constructor Getting types during a parse to avoid a whole-program walk later
* Retire EvalutatorCliff Click7 days7-1007/+49
| | | | Minor rounding bug in eval2
* Fix ++x in methodsCliff Click7 days1-0/+29
| | | | Fix ideaj setups
* Turn off Store GVN with explainationCliff Click13 days3-2/+55
|
* Fix memory on Load splitting upCliff Click13 days2-0/+61
|
* Cleanup & backportclinitCliff Click13 days44-496/+676
| | | | The phase rework, made new phases explicit and add them to the CodeGen driver. Fix the flag-spilling on X86 and ARM. Fix the GCM conservative anti-deps and backport.
* More test case vs RA cleanupCliff Click2026-10-071-7/+9
| | | | | Missing a few risc/arm encodings. Make private many tests, so they don't escape and the escaped fcn inflate x86 spill numbers
* Towrds getting RA spill counts comparableCliff Click2026-10-0712-58/+149
| | | | Ignore JIGs. Get test suites more conical, so reg alloc spill counts are comparable
* flt->int conversionCliff Click2026-10-0713-4/+141
|
* RoundF32 actually roundsCliff Click2026-10-071-0/+1
|
* Make RA deterministicCliff Click2026-10-071-4/+12
|
* Pick up japanese transaltionpr262-doc-followupsCliff Click2026-10-074-270/+4
| | | | A bunch of minor README fixes, missing TOC, grammer cleanup
* docs: add Japanese translations for all chaptersJun Kawasaki2026-10-064-0/+404
|
* Small peep to drop simple store-updates out of loopsCliff Click2026-10-055-5/+60
|
* Require matching types to use algebraic identiesCliff Click2026-10-059-9/+9
| | | | Fixes some bugs `flit x; return x ^ 0;` should give an error instead of returning the plain `x`
* Slides for 2026 REBASEreadmeCliff Click2026-10-041-2/+2
|
* Chapter renumber, and split ch 17Cliff Click2026-10-0330-1110/+1251
| | | | | | Renumber chapters 10a, 10b, 11, 12, 13, 14 -> 10, 11, 13, 12, [11,14]. Split ch 17 into a 17a and 17b; shuffle around im/mutable syntax to be consistent, and present it more slowly. THe new immutable syntax is pushed through all later chapters
* First pass README updatesCliff Click2026-10-021-27/+30
|
* Fix bug loop tree depth on inf loopsCliff Click2026-10-028-8/+95
|
* Move debug printing into shared spaceCliff Click2026-10-0156-858/+327
| | | | Same as the graph viewer, moves a lot of code out of all Nodes
* Merge pull request #258: same constant phi merge testCliff Click2026-09-301-0/+15
|\ | | | | | | Preserve the regression across the Chapter 10 split by including it in both chapter10a and chapter10b. Validated Chapter05Test in all 22 affected snapshots (374 tests).
| * Add same constant phi merge testfuhsnn2026-09-291-0/+15
| |
* | ch 20 forward port memoryCliff Click2026-09-3036-407/+1081
|/
* Check un-init not-null constructor fieldsCliff Click2026-09-284-9/+13
| | | | | | | | Propagate BOT inputs; Arith, Load. CallEnd inlining, the FUnPtr dies early. Load asserts when loading against uninit not-null field. Keep not-nill state for storage class. Clean up Node.peep as constant.
* Remove -disablePeepholeCliff Click2026-09-277-91/+4
|
* Extend and backport SubNode peephole (#254)Hsiang-Ying Fu2026-09-253-4/+50
| | | | | | | | | | | | | | | * Extend and backport SubNode peephole * Add tests * Restrict subtraction zero peepholes to integer operands Require resolved integer mode in chapter 25 so zero subtraction preserves floating-point signed zero. Keep nonnumeric operands in the graph for subtraction diagnostics. Add signed-zero coverage from chapter 12 and null-subtraction diagnostics from chapter 22. Confirmed the regressions fail on the original PR. Full Make suites pass in chapters 4-25 (5462 tests), including fresh chapter 25 sys.o compilation. --------- Co-authored-by: Cliff Click <cliffc@acm.org>
* Bunch more animation workCliff Click2026-09-255-3/+20
|
* Bunch better layout optionsCliff Click2026-09-241-1/+3
|
* Keyboard shortcutsCliff Click2026-09-234-6/+26
| | | | | Fast forward/reverse, pick-a-frame. Shorter type names.
* Graph cleanupCliff Click2026-09-222-1/+3
| | | | Phis stay with regions, stop sinks to bottom,
* Tidy up scope displayCliff Click2026-09-221-1/+1
|
* Add shared graph viewer to all chaptersCliff Click2026-09-2238-1003/+139
|
* move the graph visualizer into shared codeCliff Click2026-09-216-2268/+87
|
* Final reg-alloc across chapters cleanupCliff Click2026-09-205-10/+39
|
* Add back copy coaleascing in ch21Cliff Click2026-09-202-1/+18
| | | | Minor arm encoding fix.
* Missed fileCliff Click2026-09-201-71/+106
|
* Ch 20 Reg AllocCliff Click2026-09-2011-105/+365
| | | | | | | Includes all bug fixes from later chapters, so its at least correct. Skips a lot of improvement heuristics, these get added in later chapters. Includes spill-stats, to more easily track improvements. Includes targeted tests.
* Unify GCM across chaptersCliff Click2026-09-207-76/+153
| | | | | | Remove the _anti field. Remove the isPinned() call. Add a copyEmpty call.
* Unify mixed-return checking and resultsCliff Click2026-09-1914-28/+100
| | | | Unify dominator caching.
* Use isDead() instead of checking null inputsCliff Click2026-09-191-1/+1
|
* debug printers no longer call self-optimizing accessorsCliff Click2026-09-1913-11/+189
|
* Handle double-negation preserving not-null knowledgeCliff Click2026-09-193-3/+61
|
* Backport string escapes and many op-assignCliff Click2026-09-172-5/+111
|
* Get makefiles and fuzzer testing uniform across chaptersCliff Click2026-09-172-6/+35
|
* Fix stale copy-pasted comment on BoolNode's phiCon call (#249)Symious2026-09-091-3/+3
| | | | | | | | | | | | | | | | | | The three comment lines above `AddNode.phiCon(this, ...)` in BoolNode were copy-pasted from MulNode and never adapted: they use `*` as the operator and describe the rotated shape `(x * (phi cons)) * con`. For BoolNode neither is right. The operator is a compare, and in chapters 6-9 `rotate` is hard-coded `false`, so the rotated shape is never matched; the shapes actually handled are `(phi cons) cmp con` and `(phi cons) cmp (phi cons)`. Reword the comment accordingly, and in chapters 6-9 add a line noting why rotate is off. Chapters 10-25 pass `this instanceof EQ`, so no such claim is made there. Comment-only change; no code is touched. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
* Move `addUse()` return statement to `keep()` (#243)Hsiang-Ying Fu2026-07-031-6/+3
|
* More README updatesCliff Click2025-04-101-2/+2
|