Home | History | Annotate | only in /external/llvm/lib/Target/CellSPU
Up to higher level directory
NameDateSize
CellSDKIntrinsics.td28-Mar-201219K
CMakeLists.txt28-Mar-2012977
Makefile28-Mar-2012642
MCTargetDesc/28-Mar-2012
README.txt28-Mar-20123.2K
SPU.h28-Mar-2012937
SPU.td28-Mar-20122.1K
SPU128InstrInfo.td28-Mar-20121.5K
SPU64InstrInfo.td28-Mar-201215.8K
SPUAsmPrinter.cpp28-Mar-201211.1K
SPUCallingConv.td28-Mar-20122.8K
SPUFrameLowering.cpp28-Mar-20129.7K
SPUFrameLowering.h28-Mar-20122.5K
SPUHazardRecognizers.cpp28-Mar-20123.5K
SPUHazardRecognizers.h28-Mar-20121K
SPUInstrBuilder.h28-Mar-20121.4K
SPUInstrFormats.td28-Mar-20129.6K
SPUInstrInfo.cpp28-Mar-201214.2K
SPUInstrInfo.h28-Mar-20123.4K
SPUInstrInfo.td28-Mar-2012157.8K
SPUISelDAGToDAG.cpp28-Mar-201243.4K
SPUISelLowering.cpp28-Mar-2012119.6K
SPUISelLowering.h28-Mar-20127.7K
SPUMachineFunction.h28-Mar-20121.3K
SPUMathInstr.td28-Mar-20124.4K
SPUNodes.td28-Mar-20126.3K
SPUNopFiller.cpp28-Mar-20124.7K
SPUOperands.td28-Mar-201220.8K
SPURegisterInfo.cpp28-Mar-201211.3K
SPURegisterInfo.h28-Mar-20123.6K
SPURegisterInfo.td28-Mar-20128.5K
SPURegisterNames.h28-Mar-2012582
SPUSchedule.td28-Mar-20123.1K
SPUSelectionDAGInfo.cpp28-Mar-2012737
SPUSelectionDAGInfo.h28-Mar-2012828
SPUSubtarget.cpp28-Mar-20122.3K
SPUSubtarget.h28-Mar-20123.2K
SPUTargetMachine.cpp28-Mar-20122.5K
SPUTargetMachine.h28-Mar-20122.5K
TargetInfo/28-Mar-2012

README.txt

      1 //===- README.txt - Notes for improving CellSPU-specific code gen ---------===//
      2 
      3 This code was contributed by a team from the Computer Systems Research
      4 Department in The Aerospace Corporation:
      5 
      6 - Scott Michel (head bottle washer and much of the non-floating point
      7   instructions)
      8 - Mark Thomas (floating point instructions)
      9 - Michael AuYeung (intrinsics)
     10 - Chandler Carruth (LLVM expertise)
     11 - Nehal Desai (debugging, i32 operations, RoadRunner SPU expertise)
     12 
     13 Some minor fixes added by Kalle Raiskila.
     14 
     15 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     16 IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     17 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR
     18 OTHERWISE.  IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE FOR DAMAGES
     19 OF ANY KIND OR NATURE WHETHER BASED IN CONTRACT, TORT, OR OTHERWISE ARISING
     20 OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE INCLUDING, WITHOUT
     21 LIMITATION, DAMAGES RESULTING FROM LOST OR CONTAMINATED DATA, LOST PROFITS OR
     22 REVENUE, COMPUTER MALFUNCTION, OR FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL,
     23 OR PUNITIVE  DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR
     24 SUCH DAMAGES ARE FORESEEABLE.
     25 
     26 ---------------------------------------------------------------------------
     27 --WARNING--:
     28 --WARNING--: The CellSPU work is work-in-progress and "alpha" quality code.
     29 --WARNING--:
     30 
     31 If you are brave enough to try this code or help to hack on it, be sure
     32 to add 'spu' to configure's --enable-targets option, e.g.:
     33 
     34         ./configure <your_configure_flags_here> \
     35            --enable-targets=x86,x86_64,powerpc,spu
     36 
     37 ---------------------------------------------------------------------------
     38 
     39 TODO:
     40 * Create a machine pass for performing dual-pipeline scheduling specifically
     41   for CellSPU, and insert branch prediction instructions as needed.
     42 
     43 * i32 instructions:
     44 
     45   * i32 division (work-in-progress)
     46 
     47 * i64 support (see i64operations.c test harness):
     48 
     49   * shifts and comparison operators: done
     50   * sign and zero extension: done
     51   * addition: done
     52   * subtraction: needed
     53   * multiplication: done
     54 
     55 * i128 support:
     56 
     57   * zero extension, any extension: done
     58   * sign extension: done
     59   * arithmetic operators (add, sub, mul, div): needed
     60   * logical operations (and, or, shl, srl, sra, xor, nor, nand): needed
     61 
     62     * or: done
     63 
     64 * f64 support
     65 
     66   * Comparison operators:
     67     SETOEQ              unimplemented
     68     SETOGT              unimplemented
     69     SETOGE              unimplemented
     70     SETOLT              unimplemented
     71     SETOLE              unimplemented
     72     SETONE              unimplemented
     73     SETO                done (lowered)
     74     SETUO               done (lowered)
     75     SETUEQ              unimplemented
     76     SETUGT              unimplemented
     77     SETUGE              unimplemented
     78     SETULT              unimplemented
     79     SETULE              unimplemented
     80     SETUNE              unimplemented
     81 
     82 * LLVM vector suport
     83 
     84   * VSETCC needs to be implemented. It's pretty straightforward to code, but
     85     needs implementation.
     86 
     87 * Intrinsics
     88 
     89   * spu.h instrinsics added but not tested. Need to have an operational
     90     llvm-spu-gcc in order to write a unit test harness.
     91 
     92 ===-------------------------------------------------------------------------===
     93