Reverting r56249. On further investigation, this functionality isn't needed.
[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 is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the entry points for global functions defined in the LLVM
11 // Cell SPU back-end.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_TARGET_IBMCELLSPU_H
16 #define LLVM_TARGET_IBMCELLSPU_H
17
18 #include <iosfwd>
19
20 namespace llvm {
21   class SPUTargetMachine;
22   class FunctionPass;
23   class raw_ostream;
24
25   FunctionPass *createSPUISelDag(SPUTargetMachine &TM);
26   FunctionPass *createSPUAsmPrinterPass(raw_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   //! Predicate test for an unsigned 10-bit value
59   /*!
60     \param Value The input value to be tested
61
62     This predicate tests for an unsigned 10-bit value, returning the 10-bit value
63     as a short if true.
64    */
65   inline bool isU10Constant(short Value) {
66     return (Value == (Value & 0x3ff));
67   }
68
69   inline bool isU10Constant(int Value) {
70     return (Value == (Value & 0x3ff));
71   }
72
73   inline bool isU10Constant(uint32_t Value) {
74     return (Value == (Value & 0x3ff));
75   }
76
77   inline bool isU10Constant(int64_t Value) {
78     return (Value == (Value & 0x3ff));
79   }
80
81   inline bool isU10Constant(uint64_t Value) {
82     return (Value == (Value & 0x3ff));
83   }
84 }
85
86 // Defines symbolic names for the SPU instructions.
87 //
88 #include "SPUGenInstrNames.inc"
89
90 #endif /* LLVM_TARGET_IBMCELLSPU_H */