summaryrefslogtreecommitdiff
path: root/R600ToDo.mdwn
diff options
context:
space:
mode:
authorvlj <vlj@web>2013-09-29 15:43:18 -0700
committerdri <iki-dri@freedesktop.org>2013-09-29 15:43:18 -0700
commit673818a7b5d8c0714883c0be442f53163c1d2c0c (patch)
tree90070afb0d8d9e0580de1de48f8c9bcc0f69715e /R600ToDo.mdwn
parent4bb4dcd3175ef1d3a5ac063d98f3cc11de028db0 (diff)
Diffstat (limited to 'R600ToDo.mdwn')
-rw-r--r--R600ToDo.mdwn9
1 files changed, 0 insertions, 9 deletions
diff --git a/R600ToDo.mdwn b/R600ToDo.mdwn
index 823ccd1..d73ded5 100644
--- a/R600ToDo.mdwn
+++ b/R600ToDo.mdwn
@@ -44,15 +44,6 @@ And here is the R600g to do list; if you feel something is missing please add it
* _Status:_ N/A
* _Description:_
* One way to do this would be to stick assembly output into an ELF section, but I think the biggest challenge will be figuring out how to generate ISA and assembly together.
-* **Move FNEG/FABS/Immediate folding code to AMDGPUDAGToDAGISel::PostprocessISelDAG()**
- * _Difficulty:_ Medium
- * _Who's working on it:_ N/A
- * _Date Started:_ N/A
- * _Status:_ N/A
- * _Description:_
- * R600 provides 2 inputs modifier to encode some operation: FNEG (on all ALU insts) and FABS (only on OP2 insts). It also supports inline immediate (for 0.0, +-0.5, +-1.0, 0 and 1) while others immediate can be folded to R600::Imm operand. We currently use a hook in AMDGPUDAGToDAGISel::Select() function to parse
-inputs when a pattern is matched by llvm instruction selection pass. It has a major drawback though : it will only recursively parse the children of the top most selected instruction (intentionnaly done to avoid parsing whole ISel tree several time). This means than pattern won't be properly parsed : For instance flog ( fabs (fneg x))) will be correctly lowered to a single instruction with both NEG and ABS bit set, but fp_to_sint ( fneg (x)) won't, because fp_to_sint is lowered to FP_TO_INT (TRUNC (x)) ; we will parse FP_TO_INT input, see it's not a fneg/fabs/immediate, and returns.
-To avoid that, we can use the PostprocessISelDAG hook : all nodes are MachineNode after ISel and we can parse the use list of all nodes to optimize them when possible.
### Compute