Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-09-15 | remove obsolete comment about MEM | Quentin Carbonneaux | |
It turned out to be not so useful to have a MEM type for references. Instead I used an OAddr instruction that translates simply to a lea. | |||
2015-09-15 | add the mul instruction | Quentin Carbonneaux | |
2015-09-15 | remove round-robin in ralloc (need preferences) | Quentin Carbonneaux | |
2015-09-15 | make sure tests emitted are encodable | Quentin Carbonneaux | |
2015-09-15 | replace RMem refs with an OAddr opertation | Quentin Carbonneaux | |
2015-09-15 | compile branches on and using test | Quentin Carbonneaux | |
2015-09-15 | add a large test | Quentin Carbonneaux | |
2015-09-15 | forgot about phi nodes in the spiller | Quentin Carbonneaux | |
When we are dealing with a block that is not a loop, we must make sure to consider phi arguments of successors as live variables. Ideally we could move the code to find all live-ins (including phi arguments) to the live module. | |||
2015-09-15 | make sure eflags-writing do not disappear | Quentin Carbonneaux | |
This is a hack implementation, ideally I would like something cleaner. The problem is that regalloc thinks an instruction is dead code because it's not aware that it writes to eflags. | |||
2015-09-15 | clobber check code was wrong in dopm() | Quentin Carbonneaux | |
2015-09-15 | fix bug in parallel moves code | Quentin Carbonneaux | |
2015-09-15 | handle OAnd in isel | Quentin Carbonneaux | |
2015-09-15 | change strategy for phi nodes | Quentin Carbonneaux | |
2015-09-15 | avoid depending on uninitialized r | Quentin Carbonneaux | |
2015-09-15 | tentative support for fast allocs | Quentin Carbonneaux | |
It seems that the MEM reference type is meaningless in too many positions. Because of this, it is unclear if we should keep it or just introduce a OAddr instruction that only accepts slots. Regardless of the above, the spilling module needs to use the new slot_() function, also, the emit function needs to fetch the size of the stack frame from the slot[] array. The naming is still very transitional, here is a list of all bogus names I can think of: - SLOT() - Tmp.spill - slot_ | |||
2015-09-15 | hack a slot-packing function and its tests | Quentin Carbonneaux | |
2015-09-15 | use the same bitset for regs and tmps in rega() | Quentin Carbonneaux | |
This is possible because we know that they are represented by different integers. | |||
2015-09-15 | major lifting: get rid of RReg | Quentin Carbonneaux | |
I've been septic since I introduced it, this commit proves that it costs more than it helps. I've also fixed a bad bug in rega() where I alloc'ed the wrong size for internal arrays. Enums now have names so I can use them to cast in gdb to get the name corresponding to a constant. | |||
2015-09-15 | add basic support for stack allocation | Quentin Carbonneaux | |
2015-09-15 | minor size optimization for 0XSet | Quentin Carbonneaux | |
2015-09-15 | fix typos in selcmp and comment | Quentin Carbonneaux | |
2015-09-15 | comment about immutables | Quentin Carbonneaux | |
2015-09-15 | fail on constant comparisons | Quentin Carbonneaux | |
In the future they will be eliminated by constant propagation. | |||
2015-09-15 | add a small size optimization to emit | Quentin Carbonneaux | |
2015-09-15 | support for large constants | Quentin Carbonneaux | |
It was not as simple as I thought. All constants used in 32b context get truncated to 32 bits. All constants in 64b contexts can either remain as immutables are have to be evicted in a register, this choice is taken in noimm(). The case of the comparison needs to be documented since the context is not clearly 32 or 64 bits. I am still unsure if this is fully correct. | |||
2015-09-15 | store gcd result in a | Quentin Carbonneaux | |
2015-09-15 | use proper store suffix in max test | Quentin Carbonneaux | |
2015-09-15 | split store into store{w,l} | Quentin Carbonneaux | |
2015-09-15 | prefix register macros | Quentin Carbonneaux | |
2015-09-15 | fix my sloppy understanding of x86 assembly! | Quentin Carbonneaux | |
2015-09-15 | use round-robin in ralloc | Quentin Carbonneaux | |
This gives a more uniform use of the registers. | |||
2015-09-15 | add funny little max ssa test | Quentin Carbonneaux | |
2015-09-15 | cosmetics | Quentin Carbonneaux | |
2015-09-15 | movsb is not movsbl without suffix... | Quentin Carbonneaux | |
2015-09-15 | attempt factoring store emission code | Quentin Carbonneaux | |
2015-09-15 | parse variants of store | Quentin Carbonneaux | |
2015-09-15 | ugly support for store/load | Quentin Carbonneaux | |
2015-09-15 | parse operations with no result | Quentin Carbonneaux | |
2015-09-15 | simplify parsing | Quentin Carbonneaux | |
2015-09-15 | add nmem to opdesc for use in the spiller | Quentin Carbonneaux | |
This new machine-independent mechanism might not be general enough in the long term but, now, it provides a flexible way to inform the spiller about the maximum number of arguments of an instruction that can be spill locations. | |||
2015-09-15 | add some load/store operations | Quentin Carbonneaux | |
2015-09-15 | fix wrong instruction in emit | Quentin Carbonneaux | |
2015-09-15 | forbid two memory operands for comparisons | Quentin Carbonneaux | |
2015-09-15 | fix a bug in setloc | Quentin Carbonneaux | |
The way we detected if limit had spilled a variable was incorrect. This is because two consecutive calls to limit could require a spill of the same variable. Instead, we now use a return value from limit. Note that this is still not so ideal. Indeed, it works properly only when limit spills one value only, if not, we should return a bitset. In the current use scheme of limit, this invariant is true but ideally we would like to call limit with *all arguments added at once*, not one after the other. | |||
2015-09-15 | add very nice spilling stress test | Quentin Carbonneaux | |
2015-09-15 | minor change in rpo walking | Quentin Carbonneaux | |
2015-09-15 | simplify frequent pred detection in rega | Quentin Carbonneaux | |
2015-09-15 | factor some comparison emitting code | Quentin Carbonneaux | |
2015-09-15 | add some more specific comments | Quentin Carbonneaux | |
2015-09-15 | the only wrong use count is the one of r | Quentin Carbonneaux | |