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 | a589a08c91edc61758ba4ddb273e7ddd3d7c83b9 (patch) | |
tree | 14fcef1ad3cad041b9763118cf50cbbb06a4cb65 /lib/Target/CellSPU/SPU.h | |
parent | 01f4fc1a80fac2ec8f4335a6361df5a0e36c3c9a (diff) | |
download | llvm-a589a08c91edc61758ba4ddb273e7ddd3d7c83b9.tar.gz llvm-a589a08c91edc61758ba4ddb273e7ddd3d7c83b9.tar.bz2 llvm-a589a08c91edc61758ba4ddb273e7ddd3d7c83b9.tar.xz |
More CellSPU files... more to follow.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44559 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CellSPU/SPU.h')
-rw-r--r-- | lib/Target/CellSPU/SPU.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/lib/Target/CellSPU/SPU.h b/lib/Target/CellSPU/SPU.h new file mode 100644 index 0000000000..d66fce2bc0 --- /dev/null +++ b/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 */ |