blob: 64a67dff6c8064b6bddaf205925700c26aa8e7b7 [file] [log] [blame]
Nate Begemanb64af912004-08-10 20:42:36 +00001TODO:
2* implement cast fp to bool
Nate Begemanca068e82004-08-14 22:16:36 +00003* implement algebraic shift right long by reg
4* implement scheduling info
5* implement powerpc-64 for darwin
6* implement powerpc-64 for aix
7* fix rlwimi generation to be use-and-def
Nate Begemanb64af912004-08-10 20:42:36 +00008* fix ulong to double:
Misha Brukman8b88d902004-07-28 19:16:10 +00009 floatdidf assumes signed longs. so if the high but of a ulong
10 just happens to be set, you get the wrong sign. The fix for this
11 is to call cmpdi2 to compare against zero, if so shift right by one,
12 convert to fp, and multiply by (add to itself). the sequence would
13 look like:
14 {r3:r4} holds ulong a;
15 li r5, 0
16 li r6, 0 (set r5:r6 to ulong 0)
17 call cmpdi2 ==> sets r3 <, =, > 0
18 if r3 > 0
19 call floatdidf as usual
20 else
21 shift right ulong a, 1 (we could use emitShift)
22 call floatdidf
23 fadd f1, f1, f1 (fp left shift by 1)
Misha Brukmanbb966a42004-07-26 16:23:55 +000024* setCondInst needs to know branchless versions of seteq/setne/etc
25* cast elimination pass (uint -> sbyte -> short, kill the byte -> short)
Misha Brukman4ce5ce22004-07-27 18:43:04 +000026* should hint to the branch select pass that it doesn't need to print the
27 second unconditional branch, so we don't end up with things like:
Misha Brukman4ce5ce22004-07-27 18:43:04 +000028 b .LBBl42__2E_expand_function_8_674 ; loopentry.24
29 b .LBBl42__2E_expand_function_8_42 ; NewDefault
30 b .LBBl42__2E_expand_function_8_42 ; NewDefault
Misha Brukmanbb966a42004-07-26 16:23:55 +000031
Misha Brukman1be339a2004-07-23 22:37:22 +000032Currently failing tests:
Misha Brukman1be339a2004-07-23 22:37:22 +000033* SingleSource
Misha Brukmanb9b8ba52004-07-28 00:55:12 +000034 `- Regression
Misha Brukman88f8f922004-07-30 15:53:09 +000035 | `- casts (ulong to fp failure)
Misha Brukman1be339a2004-07-23 22:37:22 +000036 `- Benchmarks
37 | `- Shootout-C++ : most programs fail, miscompilations
38 `- UnitTests
Misha Brukman88f8f922004-07-30 15:53:09 +000039 | `- C++Catch
40 | `- SimpleC++Test
41 | `- ConditionalExpr (also C++)
Misha Brukman1be339a2004-07-23 22:37:22 +000042* MultiSource
43 |- Applications
44 | `- burg: miscompilation
Misha Brukman1be339a2004-07-23 22:37:22 +000045 | `- hbd: miscompilation
46 | `- d (make_dparser): miscompilation
47 `- Benchmarks
Nate Begemanca068e82004-08-14 22:16:36 +000048 `- MallocBench/gs: miscompilation