Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-10-30 | cosmetics on address numbering code | Quentin Carbonneaux | |
2015-10-30 | store addressability infos in a struct | Quentin Carbonneaux | |
2015-10-30 | do not give an addressability number to scales | Quentin Carbonneaux | |
2015-10-30 | store child matchings in the addressing table | Quentin Carbonneaux | |
2015-10-30 | missed a few cases in the tree automaton | Quentin Carbonneaux | |
2015-10-30 | start adress mode recognition | Quentin Carbonneaux | |
2015-10-30 | rename spill field in Tmp to slot | Quentin Carbonneaux | |
2015-10-30 | emit code for extensions, move slots into RAlt | Quentin Carbonneaux | |
2015-10-19 | uniformize sign extension and mem loads | Quentin Carbonneaux | |
2015-10-06 | add pool memory management | Quentin Carbonneaux | |
2015-10-06 | use new vector functions instead of reallocs | Quentin Carbonneaux | |
2015-10-06 | specialize vdup into idup | Quentin Carbonneaux | |
2015-10-06 | factor ins array edition in icpy | Quentin Carbonneaux | |
2015-10-05 | factor vector duplication in vdup() | Quentin Carbonneaux | |
2015-10-05 | factor some utility functions/data in util.c | Quentin Carbonneaux | |
2015-10-05 | clean the command line interface | Quentin Carbonneaux | |
2015-10-01 | fix a bug for structure arguments in regs | Quentin Carbonneaux | |
2015-09-30 | remove dead assignment | Quentin Carbonneaux | |
2015-09-30 | fix two invalid Tmp.spill values | Quentin Carbonneaux | |
2015-09-29 | wip on new stack slots (emit, spill) | Quentin Carbonneaux | |
2015-09-29 | more fixes for the new slot representation | Quentin Carbonneaux | |
2015-09-29 | wip on a simpler slot handling | Quentin Carbonneaux | |
2015-09-22 | small simplification in seljmp | Quentin Carbonneaux | |
2015-09-22 | compile retw and retl as a move in rax | Quentin Carbonneaux | |
2015-09-20 | save callee-save registers | Quentin Carbonneaux | |
2015-09-17 | this fixme was really more a todo | Quentin Carbonneaux | |
2015-09-17 | fix buggy handling of stack arguments in selpar() | Quentin Carbonneaux | |
2015-09-17 | fix two bugs in selpar() | Quentin Carbonneaux | |
- One missing argument for OAlloc. - One reference shuffling. | |||
2015-09-17 | fix memcpy bug | Quentin Carbonneaux | |
2015-09-17 | start work on fuction parameters | Quentin Carbonneaux | |
2015-09-15 | heavy modification of call handling | Quentin Carbonneaux | |
The IR generated by calls was very bulky because two instructions were used for marking the live range of a clobber. This patch attempts to store the information of what registers are use/def/clobber in the call instruction itself, this leads to more compact code (even more when we'll have SSE registers). However, I find that the amount of extra code needed is not really easonable. Fortunately it is not too invasive, thus if the complexity creeps in, it should be easy to revert. | |||
2015-09-15 | emit stack fixup only when necessary | Quentin Carbonneaux | |
2015-09-15 | reshuffle instructions around call | Quentin Carbonneaux | |
2015-09-15 | hack to enable proper regalloc on calls | Quentin Carbonneaux | |
I add the dual to dummy uses: dummy defs. They are compiled to nothing, but help preserving the invariants I had when writing the register allocator. Clearly, there should be a better way. | |||
2015-09-15 | fix alignment for structs on the stack | Quentin Carbonneaux | |
2015-09-15 | diagnose float structs | Quentin Carbonneaux | |
2015-09-15 | implement aggregate passing in regs | Quentin Carbonneaux | |
2015-09-15 | start function call lowering (wip) | Quentin Carbonneaux | |
2015-09-15 | start work on aggregate types | Quentin Carbonneaux | |
The parser now has some code to parse the description of structured types. I tried to be even less specific than LLVM "type" by creating just enough abstraction so that I can deal with both AARCH64 and x64. The base types used in the definition of an aggregate are really just syntactic sugar to give a structure a size and an alignment. Only the location of float components matters for the compilation. In particular this means that the front-ends have to know how the ABI works to pass/return small integer types. This also means that the font-end has to be aware of the layout of structures. Chris Lattner has a proposition [1] for LLVM that is still pending and goes in the direction of giving more control of the ABI the front-end. [1]: http://www.nondot.org/sabre/LLVMNotes/ExtendedIntegerResults.txt | |||
2015-09-15 | get rid of OTrunc | Quentin Carbonneaux | |
2015-09-15 | the wide bit of OAddr matters! | Quentin Carbonneaux | |
2015-09-15 | add a size to all operations (wip) | Quentin Carbonneaux | |
2015-09-15 | alloc16 comes for free, iiuc the abi | Quentin Carbonneaux | |
2015-09-15 | add truncation operation | Quentin Carbonneaux | |
It would be nicer to have some kind of subtyping where a l variable can be used in place of a w variable but it is more complications than a truncation insutruction. In some cases, it might be less efficient than the above solution by requiring two registers instead of one. (I.e when both the truncated variable and the long variable live together.) We have to see what are the usage patterns. | |||
2015-09-15 | the abi is unclear, practice suggests that change | Quentin Carbonneaux | |
2015-09-15 | OXTestw should not have 64bits arguments | Quentin Carbonneaux | |
2015-09-15 | new NAlign constant and fix frame size computation | Quentin Carbonneaux | |
2015-09-15 | move spill and emit to the new slot system | Quentin Carbonneaux | |
In emit, I worked a little to make sure that framesz works when we change the size of the svec array (if we need more alignments). | |||
2015-09-15 | add sign/zero extension operations | Quentin Carbonneaux | |
2015-09-15 | add the mul instruction | Quentin Carbonneaux | |