- Move RTLIB::Libcall enum to a separate file.
[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 was developed by the Evan Cheng and is distributed under
6 // the University of Illinois Open Source 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.
22   ///
23   enum Libcall {
24     // Integer
25     SHL_I32,
26     SHL_I64,
27     SRL_I32,
28     SRL_I64,
29     SRA_I32,
30     SRA_I64,
31     MUL_I32,
32     MUL_I64,
33     SDIV_I32,
34     SDIV_I64,
35     UDIV_I32,
36     UDIV_I64,
37     SREM_I32,
38     SREM_I64,
39     UREM_I32,
40     UREM_I64,
41     NEG_I32,
42     NEG_I64,
43
44     // FLOATING POINT
45     ADD_F32,
46     ADD_F64,
47     SUB_F32,
48     SUB_F64,
49     MUL_F32,
50     MUL_F64,
51     DIV_F32,
52     DIV_F64,
53     REM_F32,
54     REM_F64,
55     NEG_F32,
56     NEG_F64,
57     POWI_F32,
58     POWI_F64,
59     SQRT_F32,
60     SQRT_F64,
61     SIN_F32,
62     SIN_F64,
63     COS_F32,
64     COS_F64,
65
66     // CONVERSION
67     FPEXT_F32_F64,
68     FPROUND_F64_F32,
69     FPTOSINT_F32_I32,
70     FPTOSINT_F32_I64,
71     FPTOSINT_F64_I32,
72     FPTOSINT_F64_I64,
73     FPTOUINT_F32_I32,
74     FPTOUINT_F32_I64,
75     FPTOUINT_F64_I32,
76     FPTOUINT_F64_I64,
77     SINTTOFP_I32_F32,
78     SINTTOFP_I32_F64,
79     SINTTOFP_I64_F32,
80     SINTTOFP_I64_F64,
81     UINTTOFP_I32_F32,
82     UINTTOFP_I32_F64,
83     UINTTOFP_I64_F32,
84     UINTTOFP_I64_F64,
85
86     // COMPARISON
87     OEQ_F32,
88     OEQ_F64,
89     UNE_F32,
90     UNE_F64,
91     OGE_F32,
92     OGE_F64,
93     OLT_F32,
94     OLT_F64,
95     OLE_F32,
96     OLE_F64,
97     OGT_F32,
98     OGT_F64,
99     UO_F32,
100     UO_F64,
101
102     UNKNOWN_LIBCALL
103   };
104 }
105 }
106
107 #endif