blob: 04d68d5d4b6f4f9b1a3285dcc674d1e154395b87 [file] [log] [blame]
Nate Begemanb64af912004-08-10 20:42:36 +00001TODO:
2* implement cast fp to bool
3* implement signed right shift by reg
4* fix ulong to double:
Misha Brukman8b88d902004-07-28 19:16:10 +00005 floatdidf assumes signed longs. so if the high but of a ulong
6 just happens to be set, you get the wrong sign. The fix for this
7 is to call cmpdi2 to compare against zero, if so shift right by one,
8 convert to fp, and multiply by (add to itself). the sequence would
9 look like:
10 {r3:r4} holds ulong a;
11 li r5, 0
12 li r6, 0 (set r5:r6 to ulong 0)
13 call cmpdi2 ==> sets r3 <, =, > 0
14 if r3 > 0
15 call floatdidf as usual
16 else
17 shift right ulong a, 1 (we could use emitShift)
18 call floatdidf
19 fadd f1, f1, f1 (fp left shift by 1)
Nate Begemanb64af912004-08-10 20:42:36 +000020* PowerPCPEI.cpp needs to be replaced by shiny new target hook
Misha Brukmanbb966a42004-07-26 16:23:55 +000021* setCondInst needs to know branchless versions of seteq/setne/etc
22* cast elimination pass (uint -> sbyte -> short, kill the byte -> short)
Misha Brukman4ce5ce22004-07-27 18:43:04 +000023* should hint to the branch select pass that it doesn't need to print the
24 second unconditional branch, so we don't end up with things like:
Misha Brukman4ce5ce22004-07-27 18:43:04 +000025 b .LBBl42__2E_expand_function_8_674 ; loopentry.24
26 b .LBBl42__2E_expand_function_8_42 ; NewDefault
27 b .LBBl42__2E_expand_function_8_42 ; NewDefault
Misha Brukmanbb966a42004-07-26 16:23:55 +000028
29Current hacks:
30* lazy insert of GlobalBaseReg definition at front of first MBB
Nate Begemanb64af912004-08-10 20:42:36 +000031 A prime candidate for sabre's future "slightly above ISel" passes.
Misha Brukmanbb966a42004-07-26 16:23:55 +000032* cast code is huge, unwieldy. Should probably be broken up into
33 smaller pieces.
34* visitLoadInst is getting awfully cluttered as well.
Misha Brukman1be339a2004-07-23 22:37:22 +000035
36Currently failing tests:
Misha Brukman1be339a2004-07-23 22:37:22 +000037* SingleSource
Misha Brukmanb9b8ba52004-07-28 00:55:12 +000038 `- Regression
Misha Brukman88f8f922004-07-30 15:53:09 +000039 | `- casts (ulong to fp failure)
Misha Brukman1be339a2004-07-23 22:37:22 +000040 `- Benchmarks
41 | `- Shootout-C++ : most programs fail, miscompilations
42 `- UnitTests
Misha Brukman88f8f922004-07-30 15:53:09 +000043 | `- C++Catch
44 | `- SimpleC++Test
45 | `- ConditionalExpr (also C++)
Misha Brukman1be339a2004-07-23 22:37:22 +000046* MultiSource
47 |- Applications
48 | `- burg: miscompilation
49 | `- siod: llc bus error
50 | `- hbd: miscompilation
51 | `- d (make_dparser): miscompilation
52 `- Benchmarks
Misha Brukman88f8f922004-07-30 15:53:09 +000053 `- MallocBench/make: miscompilation