summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix 2 test casesCliff Click2024-10-062-0/+30
|
* Address math foldingCliff Click2024-10-063-7/+15
|
* arrays with loads and storesCliff Click2024-10-068-79/+150
| | | | | | | No range-checking yet. Length is "ary#" TypeStruct with special "[]" field is an array Fix some eager push-load-thru phi
* Redo address mathCliff Click2024-10-0619-227/+381
| | | | | | | | | | | | | Loads and Stores take a field offset instead of a field name; the name remains for debugging. NewNode takes a size and produces a pre-initialized chunk of memory with updated memory aliases for all fields. Field picks up an alias; TypeStruct loses one. TypeArray is a subclass of TypeStruct for now. TypeMem tracks a conservative value for its alias. TypeStruct computes field layouts. Now ProjNodes can have non-CFG input 0 - NewNode does, but so would a combined ModRem op from a divide, or a CAS producing both a success boolean and the old value. This impacts all the schedulers (IRPrinter, GCM, Scheduler) which previously believe slot 0 only held control nows, or could be modified to a control now. Aliases are now computed in the Parser instead of Start; Parser gets new Field math.
* Type picks up a log_size for doing struct layoutsCliff Click2024-10-066-59/+62
|
* sub same moves to computeCliff Click2024-10-061-4/+4
|
* Scope renames _scopes and _types as _idxs and _decls.Cliff Click2024-10-067-74/+66
| | | | Drop isCFG and use instanceof instead
* Div-by-1 peepCliff Click2024-10-061-1/+6
|
* Fix IRPrinterCliff Click2024-10-061-21/+40
| | | | IRPrint was using a HashTable with Node keys, which calls hashCode, which sets the flag claiming the Node is locked in the GVN table. If this is not true, you later trigger the locked-but-not-in-table assert. Which means calling toString from stopping in the debugger can trigger a later assert.
* Adding TypeArrayCliff Click2024-10-064-1/+75
|
* Ch15 initial pushCliff Click2024-10-0687-6/+12148
|
* Cleanup on ch5 READMECliff Click2024-09-291-100/+116
|
* A bunch of rewording to get better flowCliff Click2024-09-291-89/+92
| | | | Fix a bunch of indent bugs.
* c will die when the scope dies.Tamas Hadhazy2024-09-291-1/+3
|
* add graph and explanationTamas Hadhazy2024-09-292-4/+246
|
* add missing ToStringTamas Hadhazy2024-09-261-0/+4
|
* update readmeHels152024-09-251-15/+17
|
* replace constant fold version to argHels152024-09-251-6/+6
|
* extend opt and projnode docsHels152024-09-253-1/+286
|
* extend chapter 2 peephole section (#118)Tamás Hadházy2024-09-214-1/+351
| | | | | | | * extend peephole section * fix bad indentatitons * Update README.md
* remove peephole from ProjNode::idealize that is already handled by computeRobert Obkircher2024-09-169-74/+43
|
* Folding loads before phis needs more work (#116)Cliff Click2024-09-1513-37/+173
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Folding loads before phis needs more work Have to check load alias & offset/field match. Could work for stores as well, will need to check more inputs * Preserve SAR/SHL sharpness with variant shifts * phi-node cloning honors unrelated argument types * bool can never do phiCon * dont fold shifts outside the range 0-63 * Now allowed to fold Loads in Phi Because honors glb() of inputs * Correct shr of mixed sign * yank load merge again needs an anti-dep check * Stop phi-merge if it loses precision * wrap bug
* sighCliff Click2024-09-151-1/+1
|
* fix Minus wrapping MIN_LONGCliff Click2024-09-152-2/+20
|
* replace imagesTamas Hadhazy2024-09-152-4/+4
|
* b and e use different numbersTamas Hadhazy2024-09-141-4/+4
|
* revisit explanationTamas Hadhazy2024-09-141-2/+3
|
* extend explanation on scopesTamas Hadhazy2024-09-143-0/+288
|
* move x-x check up frontCliff Click2024-09-1311-34/+44
|
* x-x==0Cliff Click2024-09-1321-50/+99
| | | | | | Move x-x==0 to compute. Add x/1 ==> x All chapters
* Fix GCM of CSE storesCliff Click2024-09-1223-54/+104
| | | | | Stop CSE of stores. Backports to ch11,12,13,14
* Support transpiling more test features: iterate, IRPrinter, assertions, ↵Robert Obkircher2024-09-094-57/+158
| | | | GraphEvaluator
* Add transpiler for JUnit testsRobert Obkircher2024-09-0911-0/+473
|
* Remove commutative peepholes for shiftsThalia Archibald2024-09-073-18/+3
|
* Fix typos in chapter 14Thalia Archibald2024-09-074-15/+15
|
* README includes more design decisions for type names.Cliff Click2024-09-078-4/+161
| | | | Add Or,Xor for completeness.
* Update README.mdCliff Click2024-09-071-3/+2
|
* better monotone check for dead loopsCliff Click2024-09-074-24/+32
|
* Correct err msgCliff Click2024-09-072-4/+4
|
* Fix bugsCliff Click2024-09-075-1/+44
| | | | | AND on floats Shift-extend idiom smartly makes sharper int types.
* Fix possible monotonicity bugCliff Click2024-09-074-0/+12
| | | | Allow Add to smartly add ranges.
* Updates READMECliff Click2024-09-073-22/+31
| | | | More on Types, pushed out Arrays one more chapter
* Cleanup comments to match designCliff Click2024-09-072-22/+26
| | | | Went through several iterations, one where a null _obj was allowed, but settled on using TypeStruct.BOT instead.
* And-masking sharpens narrowed intsCliff Click2024-09-073-3/+38
| | | | Needed to recognize narrowed expressions
* minus is sane for high rangesCliff Click2024-09-071-1/+3
|
* Add READMECliff Click2024-09-071-1/+65
|
* All the remaining narrow typesCliff Click2024-09-076-34/+135
| | | | Narrow f32, requires a Round node.
* Backport empty statement fixCliff Click2024-09-0717-228/+351
| | | | | Split Ch13 tests from Chapter12Test.java Handle forward refs never defined.
* Update fuzzer for chapter 14. (#107)XmiliaH2024-09-072-51/+138
| | | | | * Update fuzzer for chapter 14. * Add and operator to evaluator
* Shift operators; sign extensionCliff Click2024-09-077-8/+228
|