summaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/RuntimeLibcalls.h
blob: 0b36c6dd28f0cd68eedaf2b31d6cf0bf4c327481 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
//===-- CodeGen/RuntimeLibcall.h - Runtime Library Calls --------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file was developed by the Evan Cheng and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the enum representing the list of runtime library calls
// the backend may emit during code generation.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CODEGEN_RUNTIMELIBCALLS_H
#define LLVM_CODEGEN_RUNTIMELIBCALLS_H

namespace llvm {
namespace RTLIB {
  /// RTLIB::Libcall enum - This enum defines all of the runtime library calls
  /// the backend can emit.
  ///
  enum Libcall {
    // Integer
    SHL_I32,
    SHL_I64,
    SRL_I32,
    SRL_I64,
    SRA_I32,
    SRA_I64,
    MUL_I32,
    MUL_I64,
    SDIV_I32,
    SDIV_I64,
    UDIV_I32,
    UDIV_I64,
    SREM_I32,
    SREM_I64,
    UREM_I32,
    UREM_I64,
    NEG_I32,
    NEG_I64,

    // FLOATING POINT
    ADD_F32,
    ADD_F64,
    SUB_F32,
    SUB_F64,
    MUL_F32,
    MUL_F64,
    DIV_F32,
    DIV_F64,
    REM_F32,
    REM_F64,
    NEG_F32,
    NEG_F64,
    POWI_F32,
    POWI_F64,
    SQRT_F32,
    SQRT_F64,
    SIN_F32,
    SIN_F64,
    COS_F32,
    COS_F64,

    // CONVERSION
    FPEXT_F32_F64,
    FPROUND_F64_F32,
    FPTOSINT_F32_I32,
    FPTOSINT_F32_I64,
    FPTOSINT_F64_I32,
    FPTOSINT_F64_I64,
    FPTOSINT_LD_I64,
    FPTOUINT_F32_I32,
    FPTOUINT_F32_I64,
    FPTOUINT_F64_I32,
    FPTOUINT_F64_I64,
    FPTOUINT_LD_I32,
    FPTOUINT_LD_I64,
    SINTTOFP_I32_F32,
    SINTTOFP_I32_F64,
    SINTTOFP_I64_F32,
    SINTTOFP_I64_F64,
    SINTTOFP_I64_LD,
    UINTTOFP_I32_F32,
    UINTTOFP_I32_F64,
    UINTTOFP_I64_F32,
    UINTTOFP_I64_F64,

    // COMPARISON
    OEQ_F32,
    OEQ_F64,
    UNE_F32,
    UNE_F64,
    OGE_F32,
    OGE_F64,
    OLT_F32,
    OLT_F64,
    OLE_F32,
    OLE_F64,
    OGT_F32,
    OGT_F64,
    UO_F32,
    UO_F64,
    O_F32,
    O_F64,

    UNKNOWN_LIBCALL
  };
}
}

#endif