Don't attribute in file headers anymore. See llvmdev for the
[oota-llvm.git] / include / llvm / CodeGen / RuntimeLibcalls.h
1 //===-- CodeGen/RuntimeLibcall.h - Runtime Library Calls --------*- 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 defines the enum representing the list of runtime library calls
11 // the backend may emit during code generation.
12 //
13 //===----------------------------------------------------------------------===//
14
15 #ifndef LLVM_CODEGEN_RUNTIMELIBCALLS_H
16 #define LLVM_CODEGEN_RUNTIMELIBCALLS_H
17
18 namespace llvm {
19 namespace RTLIB {
20   /// RTLIB::Libcall enum - This enum defines all of the runtime library calls
21   /// the backend can emit.  The various long double types cannot be merged,
22   /// because 80-bit library functions use "xf" and 128-bit use "tf".
23   /// 
24   /// When adding PPCF128 functions here, note that their names generally need
25   /// to be overridden for Darwin with the xxx$LDBL128 form.  See
26   /// PPCISelLowering.cpp.
27   ///
28   enum Libcall {
29     // Integer
30     SHL_I32,
31     SHL_I64,
32     SRL_I32,
33     SRL_I64,
34     SRA_I32,
35     SRA_I64,
36     MUL_I32,
37     MUL_I64,
38     SDIV_I32,
39     SDIV_I64,
40     UDIV_I32,
41     UDIV_I64,
42     SREM_I32,
43     SREM_I64,
44     UREM_I32,
45     UREM_I64,
46     NEG_I32,
47     NEG_I64,
48
49     // FLOATING POINT
50     ADD_F32,
51     ADD_F64,
52     ADD_PPCF128,
53     SUB_F32,
54     SUB_F64,
55     SUB_PPCF128,
56     MUL_F32,
57     MUL_F64,
58     MUL_PPCF128,
59     DIV_F32,
60     DIV_F64,
61     DIV_PPCF128,
62     REM_F32,
63     REM_F64,
64     REM_PPCF128,
65     NEG_F32,
66     NEG_F64,
67     POWI_F32,
68     POWI_F64,
69     POWI_F80,
70     POWI_PPCF128,
71     SQRT_F32,
72     SQRT_F64,
73     SQRT_F80,
74     SQRT_PPCF128,
75     SIN_F32,
76     SIN_F64,
77     COS_F32,
78     COS_F64,
79     POW_F32,
80     POW_F64,
81     POW_F80,
82     POW_PPCF128,
83
84     // CONVERSION
85     FPEXT_F32_F64,
86     FPROUND_F64_F32,
87     FPTOSINT_F32_I32,
88     FPTOSINT_F32_I64,
89     FPTOSINT_F64_I32,
90     FPTOSINT_F64_I64,
91     FPTOSINT_F80_I64,
92     FPTOSINT_PPCF128_I64,
93     FPTOUINT_F32_I32,
94     FPTOUINT_F32_I64,
95     FPTOUINT_F64_I32,
96     FPTOUINT_F64_I64,
97     FPTOUINT_F80_I32,
98     FPTOUINT_F80_I64,
99     FPTOUINT_PPCF128_I64,
100     SINTTOFP_I32_F32,
101     SINTTOFP_I32_F64,
102     SINTTOFP_I64_F32,
103     SINTTOFP_I64_F64,
104     SINTTOFP_I64_F80,
105     SINTTOFP_I64_PPCF128,
106     UINTTOFP_I32_F32,
107     UINTTOFP_I32_F64,
108     UINTTOFP_I64_F32,
109     UINTTOFP_I64_F64,
110
111     // COMPARISON
112     OEQ_F32,
113     OEQ_F64,
114     UNE_F32,
115     UNE_F64,
116     OGE_F32,
117     OGE_F64,
118     OLT_F32,
119     OLT_F64,
120     OLE_F32,
121     OLE_F64,
122     OGT_F32,
123     OGT_F64,
124     UO_F32,
125     UO_F64,
126     O_F32,
127     O_F64,
128
129     UNKNOWN_LIBCALL
130   };
131 }
132 }
133
134 #endif