Brian Gaeke | e785e53 | 2004-02-25 19:28:19 +0000 | [diff] [blame] | 1 | |
Brian Gaeke | 22b5cd8 | 2004-07-16 10:31:36 +0000 | [diff] [blame] | 2 | To-do |
| 3 | ----- |
| 4 | |
Chris Lattner | e171d5c | 2004-12-13 20:13:10 +0000 | [diff] [blame] | 5 | * Keep the address of the constant pool in a register instead of forming its |
| 6 | address all of the time. |
Chris Lattner | e171d5c | 2004-12-13 20:13:10 +0000 | [diff] [blame] | 7 | * We can fold small constant offsets into the %hi/%lo references to constant |
| 8 | pool addresses as well. |
Chris Lattner | 76afdc9 | 2006-01-30 05:35:57 +0000 | [diff] [blame] | 9 | * When in V9 mode, register allocate %icc[0-3]. |
Chris Lattner | 61273d5 | 2008-02-28 05:44:20 +0000 | [diff] [blame] | 10 | * Add support for isel'ing UMUL_LOHI instead of marking it as Expand. |
Chris Lattner | 302601c | 2006-01-31 07:37:20 +0000 | [diff] [blame] | 11 | * Emit the 'Branch on Integer Register with Prediction' instructions. It's |
| 12 | not clear how to write a pattern for this though: |
| 13 | |
| 14 | float %t1(int %a, int* %p) { |
| 15 | %C = seteq int %a, 0 |
| 16 | br bool %C, label %T, label %F |
| 17 | T: |
| 18 | store int 123, int* %p |
| 19 | br label %F |
| 20 | F: |
| 21 | ret float undef |
| 22 | } |
| 23 | |
| 24 | codegens to this: |
| 25 | |
| 26 | t1: |
| 27 | save -96, %o6, %o6 |
| 28 | 1) subcc %i0, 0, %l0 |
| 29 | 1) bne .LBBt1_2 ! F |
| 30 | nop |
| 31 | .LBBt1_1: ! T |
| 32 | or %g0, 123, %l0 |
| 33 | st %l0, [%i1] |
| 34 | .LBBt1_2: ! F |
| 35 | restore %g0, %g0, %g0 |
| 36 | retl |
| 37 | nop |
| 38 | |
| 39 | 1) should be replaced with a brz in V9 mode. |
Brian Gaeke | 22b5cd8 | 2004-07-16 10:31:36 +0000 | [diff] [blame] | 40 | |
Chris Lattner | 76e7a44 | 2006-01-31 07:43:33 +0000 | [diff] [blame] | 41 | * Same as above, but emit conditional move on register zero (p192) in V9 |
| 42 | mode. Testcase: |
| 43 | |
| 44 | int %t1(int %a, int %b) { |
| 45 | %C = seteq int %a, 0 |
| 46 | %D = select bool %C, int %a, int %b |
| 47 | ret int %D |
| 48 | } |
| 49 | |
| 50 | * Emit MULX/[SU]DIVX instructions in V9 mode instead of fiddling |
| 51 | with the Y register, if they are faster. |
| 52 | |
| 53 | * Codegen bswap(load)/store(bswap) -> load/store ASI |
| 54 | |
Chris Lattner | fabec5b | 2006-01-31 07:45:08 +0000 | [diff] [blame] | 55 | * Implement frame pointer elimination, e.g. eliminate save/restore for |
| 56 | leaf fns. |
Chris Lattner | a34b898 | 2006-01-31 07:45:45 +0000 | [diff] [blame] | 57 | * Fill delay slots |
| 58 | |
Nathan Keynes | 1ac1c1e | 2010-03-01 10:40:41 +0000 | [diff] [blame] | 59 | * Implement JIT support |