summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* nv50/ir/ra: Allocate registers for function arguments.Francisco Jerez2012-04-141-0/+6
|
* nv50/ir: Take into account function args in the live range calculation code.Francisco Jerez2012-04-142-3/+28
|
* nv50/ir/ra: Use matching physical regs for function args in caller and callee.Francisco Jerez2012-04-141-6/+83
|
* nv50/ir/tgsi: Infer function inputs/outputs.Francisco Jerez2012-04-142-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 Jerez2012-04-145-68/+82
|
* nv50/ir: Decouple DataArray from the dictionary that maps locations to values.Francisco Jerez2012-04-144-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 useChristoph Bumiller2012-04-141-2/+2
|
* nv50/ir/opt: check BB equality before instruction ordering in CSEChristoph Bumiller2012-04-141-1/+1
|
* nv50/ir/opt: don't copy-propagate cond MOVs or MOVs to other reg filesChristoph Bumiller2012-04-141-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 CSEChristoph Bumiller2012-04-142-0/+10
|
* nv50/ir/opt: Update the symbol size when combining loads and stores.Francisco Jerez2012-04-141-0/+2
|
* nv50/ir: initialize FlowInstruction::builtinChristoph Bumiller2012-04-141-1/+1
|
* nv50/ir/opt: Fix for function calls.Francisco Jerez2012-04-141-2/+3
|
* nv50/ir: Build a "symbol" table with the binary offsets of each function.Francisco Jerez2012-04-147-5/+45
|
* nv50/ir: Add support for removing functions from a program.Francisco Jerez2012-04-142-0/+3
|
* nv50/ir: Scan program functions in DFS-postorder.Francisco Jerez2012-04-145-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 Jerez2012-04-146-70/+43
|
* nv50/ir: Add convenience method for calculating the live sets of a function.Francisco Jerez2012-04-143-7/+12
|
* nv50/ir: Add support code for calculating the clobber set of a BB or function.Francisco Jerez2012-04-143-0/+34
|
* nv50/ir/opt: Don't lose modifiers during constant folding.Francisco Jerez2012-04-143-72/+92
|
* nv50/ir/opt: Improve modifier handling.Francisco Jerez2012-04-143-24/+66
|
* nv50/ir: Add support for cloning FlowInsns, ImmediateVals and BBs.Francisco Jerez2012-04-143-0/+66
|
* nv50/ir: Decouple object cloning logic from the sub-object recursion policy.Francisco Jerez2012-04-147-68/+181
|
* nv50/ir: Make sure that several IR objects are destroyed on takedown.Francisco Jerez2012-04-143-3/+17
|
* nv50/ir: make Instruction::src/def container privateChristoph Bumiller2012-04-1411-304/+320
|
* nv50/ir: Add support for unlimited instruction arguments.Francisco Jerez2012-04-147-211/+141
|
* nv50/ir: temporarily exclude nv50 code emitter from buildChristoph Bumiller2012-04-141-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 passChristoph Bumiller2012-04-141-0/+1
|
* nv50/ir/opt: improve post-multiply and check target for supportChristoph Bumiller2012-04-144-35/+90
|
* nv50/ir: add setFlagsDef/Src helperChristoph Bumiller2012-04-144-3/+29
| | | | Will be used by nv50 target.
* nv50/ir: add isAccessSupported check for memory access coalescingChristoph Bumiller2012-04-146-5/+19
|
* nv50/ir: add function for splitting a BasicBlockChristoph Bumiller2012-04-143-9/+78
| | | | Fixes to initial implementation by Francisco Jerez.
* nv50/ir: Allow attaching two nodes when either one is already inside the graph.Francisco Jerez2012-04-141-5/+5
|
* nv50/ir: Allow inserting isolated nodes to a graph.Francisco Jerez2012-04-141-6/+4
|
* nv50/ir: Fix memory corruption in Function::orderInstructions().Francisco Jerez2012-04-141-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 Jerez2012-04-141-1/+1
|
* nv50/ir: fix insertHead and remove for BBs with PHI ops onlyChristoph Bumiller2012-04-141-3/+10
|
* nv50/ir: Don't crash on zero sized BitSets.Francisco Jerez2012-04-141-0/+1
|
* nv50/ir: Fix Interval::clear().Francisco Jerez2012-04-141-0/+1
|
* nv50/ir/tgsi: handle inferSrcType(NOT) to be u32Christoph Bumiller2012-04-141-0/+1
|
* nv50/ir/opt: Fix OP_NOT to modifier conversion.Francisco Jerez2012-04-141-1/+1
|
* r600g: disable dual-src hangs evergreen for some reason.Dave Airlie2012-04-141-1/+1
| | | | | | This did work previously, so I've broken something. Signed-off-by: Dave Airlie <[email protected]>
* r300/compiler: Exit immediately from rc_vert_fc() if there is an errorTom Stellard2012-04-141-0/+4
| | | | | | | | This way we correctly report "Too many temporaries" errors. https://bugs.freedesktop.org/show_bug.cgi?id=48680 Note: This is a candidate for the stable branches.
* r300/compiler: Copy all instruction attributes during local transfomsTom Stellard2012-04-141-31/+42
| | | | | | | | | | | | | | | | | | | | | Instruction attributes like WriteALUResult and ALUResultCompare were being discarded during the some of the local transformations. This fixes the following piglit tests: glsl1-inequality (vec2, pass) loopfunc fs-any-bvec2-using-if fs-op-ne-bvec2-bvec2-using-if fs-op-ne-ivec2-ivec2-using-if fs-op-ne-mat2-mat2-using-if fs-op-ne-vec2-vec2-using-if fs-op-ne-mat2x3-mat2x3-using-if fs-op-ne-mat2x4-mat2x4-using-if https://bugs.freedesktop.org/show_bug.cgi?id=45921 NOTE: This is a candidate for the stable branches.
* r300/compiler: Fix nested flow control in r500 vertex shadersTom Stellard2012-04-1311-178/+438
|
* r300/compiler: Clear loop registers in vertex shaders w/o loopsTom Stellard2012-04-132-16/+13
| | | | | | | | | | | | | | The loop registers weren't being cleared, so any shader that was executed after a shader containing loops was at risk of having a loop randomly inserted into it. This fixes over one hundred piglit tests, although these test only failed during full piglit runs and would pass if run individually. The exact number of piglit tests that this patch fixes will vary depending on the version of piglit and the order the tests are run. NOTE: This is a candidate for the stable branches.
* glsl: If an "if" has no "then" or "else" code left, remove it.Eric Anholt2012-04-131-0/+8
| | | | | | | Cuts 8/1068 instructions from glyphy's fragment shaders on i965. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* glsl: Add a helper for generating temporary variables in ir_builder.Eric Anholt2012-04-133-31/+23
| | | | Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Add a helper for ir_builder to make dereferences for assignments.Eric Anholt2012-04-133-49/+59
| | | | | | v2: Fix writemask setup for non-vec4 assignments. Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Make a little tracking class for emitting IR lists.Eric Anholt2012-04-133-50/+42
| | | | | | | This lets us significantly shorten p->instructions->push_tail(ir), and will be used in a few more places. Reviewed-by: Kenneth Graunke <[email protected]>