Updated source file headers to llvm coding standard.
[oota-llvm.git] / lib / Target / CellSPU / SPU.h
1 //===-- SPU.h - Top-level interface for Cell SPU Target ----------*- C++ -*-==//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by a team from the Computer Systems Research
6 // Department at The Aerospace Corporation and is distributed under the
7 // University of Illinois Open Source License. See LICENSE.TXT for details.
8 //
9 //===----------------------------------------------------------------------===//
10 //
11 // This file contains the entry points for global functions defined in the LLVM
12 // Cell SPU back-end.
13 //
14 //===----------------------------------------------------------------------===//
15
16 #ifndef LLVM_TARGET_IBMCELLSPU_H
17 #define LLVM_TARGET_IBMCELLSPU_H
18
19 #include <iosfwd>
20
21 namespace llvm {
22   class SPUTargetMachine;
23   class FunctionPass;
24
25   FunctionPass *createSPUISelDag(SPUTargetMachine &TM);
26   FunctionPass *createSPUAsmPrinterPass(std::ostream &o, SPUTargetMachine &tm);
27
28   /* Utility functions/predicates/etc used all over the place: */
29   //! Predicate test for a signed 10-bit value
30   /*!
31     \param Value The input value to be tested
32
33     This predicate tests for a signed 10-bit value, returning the 10-bit value
34     as a short if true.
35    */
36   inline bool isS10Constant(short Value) {
37     int SExtValue = ((int) Value << (32 - 10)) >> (32 - 10);
38     return ((Value > 0 && Value <= (1 << 9) - 1)
39             || (Value < 0 && (short) SExtValue == Value));
40   }
41
42   inline bool isS10Constant(int Value) {
43     return (Value >= -(1 << 9) && Value <= (1 << 9) - 1);
44   }
45
46   inline bool isS10Constant(uint32_t Value) {
47     return (Value <= ((1 << 9) - 1));
48   }
49
50   inline bool isS10Constant(int64_t Value) {
51     return (Value >= -(1 << 9) && Value <= (1 << 9) - 1);
52   }
53
54   inline bool isS10Constant(uint64_t Value) {
55     return (Value <= ((1 << 9) - 1));
56   }
57 }
58
59 // Defines symbolic names for the SPU instructions.
60 //
61 #include "SPUGenInstrNames.inc"
62
63 #endif /* LLVM_TARGET_IBMCELLSPU_H */