blob: e762d9402922d8cef46c28df804f32e3054903ca [file] [log] [blame]
Misha Brukman1be339a2004-07-23 22:37:22 +00001Currently unimplemented:
2* cast fp to bool
Misha Brukmanbb966a42004-07-26 16:23:55 +00003* signed right shift of long by reg
Misha Brukman1be339a2004-07-23 22:37:22 +00004
5Current bugs:
Misha Brukman8b88d902004-07-28 19:16:10 +00006* ulong to double. ahhh, here's the problem:
7 floatdidf assumes signed longs. so if the high but of a ulong
8 just happens to be set, you get the wrong sign. The fix for this
9 is to call cmpdi2 to compare against zero, if so shift right by one,
10 convert to fp, and multiply by (add to itself). the sequence would
11 look like:
12 {r3:r4} holds ulong a;
13 li r5, 0
14 li r6, 0 (set r5:r6 to ulong 0)
15 call cmpdi2 ==> sets r3 <, =, > 0
16 if r3 > 0
17 call floatdidf as usual
18 else
19 shift right ulong a, 1 (we could use emitShift)
20 call floatdidf
21 fadd f1, f1, f1 (fp left shift by 1)
22* linking llvmg++ .s files with gcc instead of g++
Misha Brukmanbb966a42004-07-26 16:23:55 +000023
24Codegen improvements needed:
Chris Lattner3ea93462004-08-06 06:58:50 +000025* PowerPCPEI.cpp needs to save/restore regs in the opposite order
Misha Brukmanbb966a42004-07-26 16:23:55 +000026* setCondInst needs to know branchless versions of seteq/setne/etc
27* cast elimination pass (uint -> sbyte -> short, kill the byte -> short)
Misha Brukman4ce5ce22004-07-27 18:43:04 +000028* should hint to the branch select pass that it doesn't need to print the
29 second unconditional branch, so we don't end up with things like:
Misha Brukman4ce5ce22004-07-27 18:43:04 +000030 b .LBBl42__2E_expand_function_8_674 ; loopentry.24
31 b .LBBl42__2E_expand_function_8_42 ; NewDefault
32 b .LBBl42__2E_expand_function_8_42 ; NewDefault
Misha Brukmanbb966a42004-07-26 16:23:55 +000033
34Current hacks:
35* lazy insert of GlobalBaseReg definition at front of first MBB
36 A prime candidate for sabre's "slightly above ISel" passes.
37* cast code is huge, unwieldy. Should probably be broken up into
38 smaller pieces.
39* visitLoadInst is getting awfully cluttered as well.
Misha Brukman1be339a2004-07-23 22:37:22 +000040
41Currently failing tests:
Misha Brukman1be339a2004-07-23 22:37:22 +000042* SingleSource
Misha Brukmanb9b8ba52004-07-28 00:55:12 +000043 `- Regression
Misha Brukman88f8f922004-07-30 15:53:09 +000044 | `- casts (ulong to fp failure)
Misha Brukman1be339a2004-07-23 22:37:22 +000045 `- Benchmarks
46 | `- Shootout-C++ : most programs fail, miscompilations
47 `- UnitTests
Misha Brukman88f8f922004-07-30 15:53:09 +000048 | `- C++Catch
49 | `- SimpleC++Test
50 | `- ConditionalExpr (also C++)
Misha Brukman1be339a2004-07-23 22:37:22 +000051* MultiSource
52 |- Applications
53 | `- burg: miscompilation
54 | `- siod: llc bus error
55 | `- hbd: miscompilation
56 | `- d (make_dparser): miscompilation
57 `- Benchmarks
Misha Brukman88f8f922004-07-30 15:53:09 +000058 `- MallocBench/make: miscompilation