Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | nv50/ir/ra: Fix live set propagation in the secondary passes of buildLiveSets(). | Francisco Jerez | 2012-04-14 | 1 | -3/+3 |
| | |||||
* | nv50/ir/opt: don't regard OP_WRSV as dead code | Christoph Bumiller | 2012-04-14 | 1 | -1/+2 |
| | |||||
* | nv50/ir: add isUniform query to Values | Christoph Bumiller | 2012-04-14 | 2 | -0/+24 |
| | |||||
* | nv50/ir: rewrite the register allocator as GCRA, with spilling | Christoph Bumiller | 2012-04-14 | 11 | -418/+1475 |
| | | | | | This is more flexible than the linear scan, and we don't need the separate allocation pass for constrained values anymore. | ||||
* | nv50/ir/tgsi: only export x-component of PSIZE | Christoph Bumiller | 2012-04-14 | 1 | -1/+5 |
| | |||||
* | nvc0: fix emission of 3rd src in SET_AND,OR,XOR | Christoph Bumiller | 2012-04-14 | 1 | -0/+3 |
| | |||||
* | nv50/ir: Fix BuildUtil::mkSelect and mkClobber | Francisco Jerez | 2012-04-14 | 1 | -6/+2 |
| | |||||
* | nv50/ir: fix reg file conflicts with undefined-value placeholders | Christoph Bumiller | 2012-04-14 | 1 | -10/+19 |
| | |||||
* | nv50/ir/opt: silence warning (int < Elements() signedness) | Christoph Bumiller | 2012-04-14 | 1 | -1/+1 |
| | |||||
* | nv50/ir/opt: fix combineSt access to wrong instruction | Christoph Bumiller | 2012-04-14 | 1 | -1/+1 |
| | |||||
* | nv50/ir/opt: another insn NULL check in phi elimination | Christoph Bumiller | 2012-04-14 | 1 | -0/+2 |
| | |||||
* | nv50/ir/ssa: Take into account function inputs and outputs. | Francisco Jerez | 2012-04-14 | 1 | -2/+30 |
| | |||||
* | nv50/ir: Clean up before calculating instruction ordering for a new function. | Francisco Jerez | 2012-04-14 | 2 | -0/+16 |
| | |||||
* | nv50/ir/ra: Allocate registers for function arguments. | Francisco Jerez | 2012-04-14 | 1 | -0/+6 |
| | |||||
* | nv50/ir: Take into account function args in the live range calculation code. | Francisco Jerez | 2012-04-14 | 2 | -3/+28 |
| | |||||
* | nv50/ir/ra: Use matching physical regs for function args in caller and callee. | Francisco Jerez | 2012-04-14 | 1 | -6/+83 |
| | |||||
* | nv50/ir/tgsi: Infer function inputs/outputs. | Francisco Jerez | 2012-04-14 | 2 | -0/+87 |
| | | | | | | | Edit: Don't do it for the main function of (graphics) shaders, its inputs and outputs always go through TGSI_FILE_INPUT/OUTPUT. This prevents all TEMPs from counting as live out and reduces register pressure. | ||||
* | nv50/ir/tgsi: Replace the inlining logic with proper function calls. | Francisco Jerez | 2012-04-14 | 5 | -68/+82 |
| | |||||
* | nv50/ir: Decouple DataArray from the dictionary that maps locations to values. | Francisco Jerez | 2012-04-14 | 4 | -223/+236 |
| | | | | | | | | | | | The point is to keep an independent dictionary for each function. The array that was being used as dictionary has been converted into a "bimap" for two different reasons: first, because having an almost empty instance of an array with as many entries as registers there are in the program, once for every function, would be wasteful, and second, because we want to be able to map Value pointers back to locations at some point. | ||||
* | nv50/ir/opt: don't delete instruction in removeFlow before its last use | Christoph Bumiller | 2012-04-14 | 1 | -2/+2 |
| | |||||
* | nv50/ir/opt: check BB equality before instruction ordering in CSE | Christoph Bumiller | 2012-04-14 | 1 | -1/+1 |
| | |||||
* | nv50/ir/opt: don't copy-propagate cond MOVs or MOVs to other reg files | Christoph Bumiller | 2012-04-14 | 1 | -0/+4 |
| | | | | | We've never encountered the latter on nvc0, but on nv50 we have moves between GPRs and address regs. | ||||
* | nv50/ir/opt: don't replace conditional definitions in CSE | Christoph Bumiller | 2012-04-14 | 2 | -0/+10 |
| | |||||
* | nv50/ir/opt: Update the symbol size when combining loads and stores. | Francisco Jerez | 2012-04-14 | 1 | -0/+2 |
| | |||||
* | nv50/ir: initialize FlowInstruction::builtin | Christoph Bumiller | 2012-04-14 | 1 | -1/+1 |
| | |||||
* | nv50/ir/opt: Fix for function calls. | Francisco Jerez | 2012-04-14 | 1 | -2/+3 |
| | |||||
* | nv50/ir: Build a "symbol" table with the binary offsets of each function. | Francisco Jerez | 2012-04-14 | 7 | -5/+45 |
| | |||||
* | nv50/ir: Add support for removing functions from a program. | Francisco Jerez | 2012-04-14 | 2 | -0/+3 |
| | |||||
* | nv50/ir: Scan program functions in DFS-postorder. | Francisco Jerez | 2012-04-14 | 5 | -7/+16 |
| | | | | | | The reason is that several passes (regalloc, function argument binding, inlining) are going to require the callees of a function to be processed before the caller. | ||||
* | nv50/ir: Deal with graph iterators using RAII. | Francisco Jerez | 2012-04-14 | 6 | -70/+43 |
| | |||||
* | nv50/ir: Add convenience method for calculating the live sets of a function. | Francisco Jerez | 2012-04-14 | 3 | -7/+12 |
| | |||||
* | nv50/ir: Add support code for calculating the clobber set of a BB or function. | Francisco Jerez | 2012-04-14 | 3 | -0/+34 |
| | |||||
* | nv50/ir/opt: Don't lose modifiers during constant folding. | Francisco Jerez | 2012-04-14 | 3 | -72/+92 |
| | |||||
* | nv50/ir/opt: Improve modifier handling. | Francisco Jerez | 2012-04-14 | 3 | -24/+66 |
| | |||||
* | nv50/ir: Add support for cloning FlowInsns, ImmediateVals and BBs. | Francisco Jerez | 2012-04-14 | 3 | -0/+66 |
| | |||||
* | nv50/ir: Decouple object cloning logic from the sub-object recursion policy. | Francisco Jerez | 2012-04-14 | 7 | -68/+181 |
| | |||||
* | nv50/ir: Make sure that several IR objects are destroyed on takedown. | Francisco Jerez | 2012-04-14 | 3 | -3/+17 |
| | |||||
* | nv50/ir: make Instruction::src/def container private | Christoph Bumiller | 2012-04-14 | 11 | -304/+320 |
| | |||||
* | nv50/ir: Add support for unlimited instruction arguments. | Francisco Jerez | 2012-04-14 | 7 | -211/+141 |
| | |||||
* | nv50/ir: temporarily exclude nv50 code emitter from build | Christoph Bumiller | 2012-04-14 | 1 | -1/+0 |
| | | | | | It's not used yet and shouldn't have been included in the first place. | ||||
* | nv50/ir: copy value size in SSA-rename pass | Christoph Bumiller | 2012-04-14 | 1 | -0/+1 |
| | |||||
* | nv50/ir/opt: improve post-multiply and check target for support | Christoph Bumiller | 2012-04-14 | 4 | -35/+90 |
| | |||||
* | nv50/ir: add setFlagsDef/Src helper | Christoph Bumiller | 2012-04-14 | 4 | -3/+29 |
| | | | | Will be used by nv50 target. | ||||
* | nv50/ir: add isAccessSupported check for memory access coalescing | Christoph Bumiller | 2012-04-14 | 6 | -5/+19 |
| | |||||
* | nv50/ir: add function for splitting a BasicBlock | Christoph Bumiller | 2012-04-14 | 3 | -9/+78 |
| | | | | Fixes to initial implementation by Francisco Jerez. | ||||
* | nv50/ir: Allow attaching two nodes when either one is already inside the graph. | Francisco Jerez | 2012-04-14 | 1 | -5/+5 |
| | |||||
* | nv50/ir: Allow inserting isolated nodes to a graph. | Francisco Jerez | 2012-04-14 | 1 | -6/+4 |
| | |||||
* | nv50/ir: Fix memory corruption in Function::orderInstructions(). | Francisco Jerez | 2012-04-14 | 1 | -3/+7 |
| | | | | | "iter" doesn't reference a BasicBlock directly, but a Node::Graph, i.e. BasicBlock::get() is casting to the wrong pointer type. | ||||
* | nv50/ir: Fix up insertion of PHI instructions using bb->insertHead(). | Francisco Jerez | 2012-04-14 | 1 | -1/+1 |
| | |||||
* | nv50/ir: fix insertHead and remove for BBs with PHI ops only | Christoph Bumiller | 2012-04-14 | 1 | -3/+10 |
| |