2007-03-28 17:04:43 +00:00
|
|
|
//===- README.txt - Notes for improving CellSPU-specific code gen ---------===//
|
|
|
|
|
2007-12-03 23:09:49 +00:00
|
|
|
This code was contributed by a team from the Computer Systems Research
|
|
|
|
Department in The Aerospace Corporation:
|
|
|
|
|
|
|
|
- Scott Michel (head bottle washer and much of the non-floating point
|
|
|
|
instructions)
|
|
|
|
- Mark Thomas (floating point instructions)
|
|
|
|
- Michael AuYeung (intrinsics)
|
|
|
|
- Chandler Carruth (LLVM expertise)
|
2009-01-21 04:58:48 +00:00
|
|
|
- Nehal Desai (debugging, i32 operations, RoadRunner SPU expertise)
|
2007-12-03 23:09:49 +00:00
|
|
|
|
2010-05-07 18:06:28 +00:00
|
|
|
Some minor fixes added by Kalle Raiskila.
|
|
|
|
|
2007-12-03 23:09:49 +00:00
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR
|
|
|
|
OTHERWISE. IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE FOR DAMAGES
|
|
|
|
OF ANY KIND OR NATURE WHETHER BASED IN CONTRACT, TORT, OR OTHERWISE ARISING
|
|
|
|
OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE INCLUDING, WITHOUT
|
|
|
|
LIMITATION, DAMAGES RESULTING FROM LOST OR CONTAMINATED DATA, LOST PROFITS OR
|
|
|
|
REVENUE, COMPUTER MALFUNCTION, OR FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL,
|
|
|
|
OR PUNITIVE DAMAGES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR
|
2008-12-29 20:08:23 +00:00
|
|
|
SUCH DAMAGES ARE FORESEEABLE.
|
2007-12-03 23:09:49 +00:00
|
|
|
|
|
|
|
---------------------------------------------------------------------------
|
2007-12-05 02:01:41 +00:00
|
|
|
--WARNING--:
|
2007-12-03 23:09:49 +00:00
|
|
|
--WARNING--: The CellSPU work is work-in-progress and "alpha" quality code.
|
2007-12-05 02:01:41 +00:00
|
|
|
--WARNING--:
|
|
|
|
|
|
|
|
If you are brave enough to try this code or help to hack on it, be sure
|
|
|
|
to add 'spu' to configure's --enable-targets option, e.g.:
|
|
|
|
|
2008-01-30 02:55:46 +00:00
|
|
|
./configure <your_configure_flags_here> \
|
|
|
|
--enable-targets=x86,x86_64,powerpc,spu
|
2007-12-05 02:01:41 +00:00
|
|
|
|
2007-12-03 23:09:49 +00:00
|
|
|
---------------------------------------------------------------------------
|
|
|
|
|
2009-01-06 03:51:14 +00:00
|
|
|
TODO:
|
|
|
|
* Create a machine pass for performing dual-pipeline scheduling specifically
|
2009-01-21 04:58:48 +00:00
|
|
|
for CellSPU, and insert branch prediction instructions as needed.
|
2008-11-24 17:11:17 +00:00
|
|
|
|
2009-01-06 03:51:14 +00:00
|
|
|
* i32 instructions:
|
2008-11-24 17:11:17 +00:00
|
|
|
|
2009-01-06 03:51:14 +00:00
|
|
|
* i32 division (work-in-progress)
|
|
|
|
|
|
|
|
* i64 support (see i64operations.c test harness):
|
|
|
|
|
|
|
|
* shifts and comparison operators: done
|
|
|
|
* sign and zero extension: done
|
|
|
|
* addition: done
|
|
|
|
* subtraction: needed
|
2009-01-21 04:58:48 +00:00
|
|
|
* multiplication: done
|
2009-01-06 03:51:14 +00:00
|
|
|
|
|
|
|
* i128 support:
|
2007-03-28 17:04:43 +00:00
|
|
|
|
2009-01-21 04:58:48 +00:00
|
|
|
* zero extension, any extension: done
|
2009-01-06 03:51:14 +00:00
|
|
|
* sign extension: needed
|
|
|
|
* arithmetic operators (add, sub, mul, div): needed
|
2009-01-21 04:58:48 +00:00
|
|
|
* logical operations (and, or, shl, srl, sra, xor, nor, nand): needed
|
2007-03-28 17:04:43 +00:00
|
|
|
|
2009-01-21 04:58:48 +00:00
|
|
|
* or: done
|
2007-12-03 23:09:49 +00:00
|
|
|
|
2009-01-21 04:58:48 +00:00
|
|
|
* f64 support
|
|
|
|
|
|
|
|
* Comparison operators:
|
|
|
|
SETOEQ unimplemented
|
|
|
|
SETOGT unimplemented
|
|
|
|
SETOGE unimplemented
|
|
|
|
SETOLT unimplemented
|
|
|
|
SETOLE unimplemented
|
|
|
|
SETONE unimplemented
|
|
|
|
SETO done (lowered)
|
|
|
|
SETUO done (lowered)
|
|
|
|
SETUEQ unimplemented
|
|
|
|
SETUGT unimplemented
|
|
|
|
SETUGE unimplemented
|
|
|
|
SETULT unimplemented
|
|
|
|
SETULE unimplemented
|
|
|
|
SETUNE unimplemented
|
|
|
|
|
|
|
|
* LLVM vector suport
|
|
|
|
|
|
|
|
* VSETCC needs to be implemented. It's pretty straightforward to code, but
|
|
|
|
needs implementation.
|
2007-12-03 23:09:49 +00:00
|
|
|
|
|
|
|
* Intrinsics
|
|
|
|
|
2009-01-21 04:58:48 +00:00
|
|
|
* spu.h instrinsics added but not tested. Need to have an operational
|
|
|
|
llvm-spu-gcc in order to write a unit test harness.
|
2007-12-03 23:09:49 +00:00
|
|
|
|
|
|
|
===-------------------------------------------------------------------------===
|