diff options
| author | Scott Michel <scottm@aero.org> | 2007-12-03 23:14:43 +0000 |
|---|---|---|
| committer | Scott Michel <scottm@aero.org> | 2007-12-03 23:14:43 +0000 |
| commit | d821fe741e5105b4beedbff317aca90e8b2fae99 (patch) | |
| tree | 954e60844b667e981dc0231e2c143e4afb74ebec /llvm/lib/Target/CellSPU/SPU.h | |
| parent | c7bd8d9cb0d193a08e0bc891c8d52e704619eb6b (diff) | |
| download | bcm5719-llvm-d821fe741e5105b4beedbff317aca90e8b2fae99.tar.gz bcm5719-llvm-d821fe741e5105b4beedbff317aca90e8b2fae99.zip | |
More CellSPU files... more to follow.
llvm-svn: 44559
Diffstat (limited to 'llvm/lib/Target/CellSPU/SPU.h')
| -rw-r--r-- | llvm/lib/Target/CellSPU/SPU.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/llvm/lib/Target/CellSPU/SPU.h b/llvm/lib/Target/CellSPU/SPU.h new file mode 100644 index 00000000000..d66fce2bc0c --- /dev/null +++ b/llvm/lib/Target/CellSPU/SPU.h @@ -0,0 +1,64 @@ +//===-- SPU.h - Top-level interface for Cell SPU Target ----------*- C++ -*-==// +// +// The LLVM Compiler Infrastructure +// +// This file was developed by a team from the Computer Systems Research +// Department at The Aerospace Corporation. +// +// See README.txt for details. +// +//===----------------------------------------------------------------------===// +// +// This file contains the entry points for global functions defined in the LLVM +// Cell SPU back-end. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TARGET_IBMCELLSPU_H +#define LLVM_TARGET_IBMCELLSPU_H + +#include <iosfwd> + +namespace llvm { + class SPUTargetMachine; + class FunctionPass; + + FunctionPass *createSPUISelDag(SPUTargetMachine &TM); + FunctionPass *createSPUAsmPrinterPass(std::ostream &o, SPUTargetMachine &tm); + + /* Utility functions/predicates/etc used all over the place: */ + //! Predicate test for a signed 10-bit value + /*! + \param Value The input value to be tested + + This predicate tests for a signed 10-bit value, returning the 10-bit value + as a short if true. + */ + inline bool isS10Constant(short Value) { + int SExtValue = ((int) Value << (32 - 10)) >> (32 - 10); + return ((Value > 0 && Value <= (1 << 9) - 1) + || (Value < 0 && (short) SExtValue == Value)); + } + + inline bool isS10Constant(int Value) { + return (Value >= -(1 << 9) && Value <= (1 << 9) - 1); + } + + inline bool isS10Constant(uint32_t Value) { + return (Value <= ((1 << 9) - 1)); + } + + inline bool isS10Constant(int64_t Value) { + return (Value >= -(1 << 9) && Value <= (1 << 9) - 1); + } + + inline bool isS10Constant(uint64_t Value) { + return (Value <= ((1 << 9) - 1)); + } +} + +// Defines symbolic names for the SPU instructions. +// +#include "SPUGenInstrNames.inc" + +#endif /* LLVM_TARGET_IBMCELLSPU_H */ |

