RuntimeLibcalls.h revision 5a42ae81f742aaab826b7a72cb0a9a7e5a957a07
1495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//===-- CodeGen/RuntimeLibcall.h - Runtime Library Calls --------*- C++ -*-===//
2495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//
3495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//                     The LLVM Compiler Infrastructure
4495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//
57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// This file is distributed under the University of Illinois Open Source
67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner// License. See LICENSE.TXT for details.
7495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//
8495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//===----------------------------------------------------------------------===//
9495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//
10495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng// This file defines the enum representing the list of runtime library calls
11b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands// the backend may emit during code generation, and also some helper functions.
12495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//
13495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng//===----------------------------------------------------------------------===//
14495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
15495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#ifndef LLVM_CODEGEN_RUNTIMELIBCALLS_H
16495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#define LLVM_CODEGEN_RUNTIMELIBCALLS_H
17495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
18b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands#include "llvm/CodeGen/ValueTypes.h"
19b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
20495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Chengnamespace llvm {
21495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Chengnamespace RTLIB {
22495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng  /// RTLIB::Libcall enum - This enum defines all of the runtime library calls
23161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen  /// the backend can emit.  The various long double types cannot be merged,
24161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen  /// because 80-bit library functions use "xf" and 128-bit use "tf".
25362fee90b9a1d64ac091755466caf6a94ade22ebEric Christopher  ///
26fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen  /// When adding PPCF128 functions here, note that their names generally need
27fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen  /// to be overridden for Darwin with the xxx$LDBL128 form.  See
28fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen  /// PPCISelLowering.cpp.
29495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng  ///
30495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng  enum Libcall {
31495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // Integer
3215c94d08ab2be2e3d00de4edbfc7adde6545a7dbSanjiv Gupta    SHL_I16,
33495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SHL_I32,
34495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SHL_I64,
35dddc6291fb5274282a20d5923b50535d456d34a4Duncan Sands    SHL_I128,
3615c94d08ab2be2e3d00de4edbfc7adde6545a7dbSanjiv Gupta    SRL_I16,
37495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SRL_I32,
38495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SRL_I64,
39dddc6291fb5274282a20d5923b50535d456d34a4Duncan Sands    SRL_I128,
4015c94d08ab2be2e3d00de4edbfc7adde6545a7dbSanjiv Gupta    SRA_I16,
41495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SRA_I32,
42495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SRA_I64,
43dddc6291fb5274282a20d5923b50535d456d34a4Duncan Sands    SRA_I128,
448983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    MUL_I8,
4515c94d08ab2be2e3d00de4edbfc7adde6545a7dbSanjiv Gupta    MUL_I16,
46495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    MUL_I32,
47495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    MUL_I64,
485ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    MUL_I128,
49362fee90b9a1d64ac091755466caf6a94ade22ebEric Christopher    MULO_I32,
50362fee90b9a1d64ac091755466caf6a94ade22ebEric Christopher    MULO_I64,
51362fee90b9a1d64ac091755466caf6a94ade22ebEric Christopher    MULO_I128,
528983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    SDIV_I8,
53813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    SDIV_I16,
54495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SDIV_I32,
55495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SDIV_I64,
565ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    SDIV_I128,
578983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    UDIV_I8,
58813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    UDIV_I16,
59495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UDIV_I32,
60495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UDIV_I64,
615ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    UDIV_I128,
628983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    SREM_I8,
63813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    SREM_I16,
64495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SREM_I32,
65495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SREM_I64,
665ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    SREM_I128,
678983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    UREM_I8,
68813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    UREM_I16,
69495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UREM_I32,
70495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UREM_I64,
715ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    UREM_I128,
728e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    SDIVREM_I8,
738e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    SDIVREM_I16,
748e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    SDIVREM_I32,
758e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    SDIVREM_I64,
768e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    SDIVREM_I128,
778e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    UDIVREM_I8,
788e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    UDIVREM_I16,
798e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    UDIVREM_I32,
808e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    UDIVREM_I64,
818e23e815ad1136721acdfcce76975a37c8a2c036Evan Cheng    UDIVREM_I128,
82495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    NEG_I32,
83495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    NEG_I64,
84495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
85495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // FLOATING POINT
86495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    ADD_F32,
87495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    ADD_F64,
88007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    ADD_F80,
8924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    ADD_F128,
90161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    ADD_PPCF128,
91495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SUB_F32,
92495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SUB_F64,
93007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    SUB_F80,
9424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SUB_F128,
95161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SUB_PPCF128,
96495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    MUL_F32,
97495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    MUL_F64,
98007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    MUL_F80,
9924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    MUL_F128,
100161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    MUL_PPCF128,
101495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    DIV_F32,
102495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    DIV_F64,
103007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    DIV_F80,
10424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    DIV_F128,
105161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    DIV_PPCF128,
106495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    REM_F32,
107495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    REM_F64,
108007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    REM_F80,
10924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    REM_F128,
110161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    REM_PPCF128,
11133390848a7eca75301d04a59b89b516d83e19ee0Cameron Zwarich    FMA_F32,
11233390848a7eca75301d04a59b89b516d83e19ee0Cameron Zwarich    FMA_F64,
11333390848a7eca75301d04a59b89b516d83e19ee0Cameron Zwarich    FMA_F80,
11424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FMA_F128,
11533390848a7eca75301d04a59b89b516d83e19ee0Cameron Zwarich    FMA_PPCF128,
116495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    POWI_F32,
117495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    POWI_F64,
118161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    POWI_F80,
11924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    POWI_F128,
120161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    POWI_PPCF128,
121495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SQRT_F32,
122495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SQRT_F64,
123161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SQRT_F80,
12424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SQRT_F128,
125161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SQRT_PPCF128,
1267794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_F32,
1277794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_F64,
1287794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_F80,
12924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    LOG_F128,
1307794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_PPCF128,
1317794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_F32,
1327794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_F64,
1337794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_F80,
13424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    LOG2_F128,
1357794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_PPCF128,
1367794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_F32,
1377794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_F64,
1387794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_F80,
13924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    LOG10_F128,
1407794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_PPCF128,
1417794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_F32,
1427794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_F64,
1437794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_F80,
14424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    EXP_F128,
1457794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_PPCF128,
1467794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_F32,
1477794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_F64,
1487794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_F80,
14924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    EXP2_F128,
1507794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_PPCF128,
151495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SIN_F32,
152495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SIN_F64,
153007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    SIN_F80,
15424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SIN_F128,
155007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    SIN_PPCF128,
156495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    COS_F32,
157495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    COS_F64,
158007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    COS_F80,
15924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    COS_F128,
160007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    COS_PPCF128,
1618688a58c53b46d2dda9bf50dafd5195790a7ed58Evan Cheng    SINCOS_F32,
1628688a58c53b46d2dda9bf50dafd5195790a7ed58Evan Cheng    SINCOS_F64,
1638688a58c53b46d2dda9bf50dafd5195790a7ed58Evan Cheng    SINCOS_F80,
1648688a58c53b46d2dda9bf50dafd5195790a7ed58Evan Cheng    SINCOS_F128,
1658688a58c53b46d2dda9bf50dafd5195790a7ed58Evan Cheng    SINCOS_PPCF128,
166e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_F32,
167e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_F64,
168e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_F80,
16924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    POW_F128,
170e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_PPCF128,
1712bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_F32,
1722bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_F64,
1732bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_F80,
17424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    CEIL_F128,
1752bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_PPCF128,
1762bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_F32,
1772bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_F64,
1782bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_F80,
17924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    TRUNC_F128,
1802bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_PPCF128,
1812bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_F32,
1822bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_F64,
1832bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_F80,
18424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    RINT_F128,
1852bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_PPCF128,
1862bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_F32,
1872bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_F64,
1882bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_F80,
18924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    NEARBYINT_F128,
1902bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_PPCF128,
19141418d17cced656f91038b2482bc9d173b4974b0Hal Finkel    ROUND_F32,
19241418d17cced656f91038b2482bc9d173b4974b0Hal Finkel    ROUND_F64,
19341418d17cced656f91038b2482bc9d173b4974b0Hal Finkel    ROUND_F80,
19441418d17cced656f91038b2482bc9d173b4974b0Hal Finkel    ROUND_F128,
19541418d17cced656f91038b2482bc9d173b4974b0Hal Finkel    ROUND_PPCF128,
1962bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F32,
1972bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F64,
1982bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F80,
19924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FLOOR_F128,
2002bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_PPCF128,
201d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F32,
202d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F64,
203d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F80,
20424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    COPYSIGN_F128,
205d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_PPCF128,
206495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
207495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // CONVERSION
20824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPEXT_F64_F128,
20924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPEXT_F32_F128,
210495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPEXT_F32_F64,
211927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov    FPEXT_F16_F32,
212927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov    FPROUND_F32_F16,
213495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPROUND_F64_F32,
214e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_F80_F32,
21524d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPROUND_F128_F32,
216e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_PPCF128_F32,
217e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_F80_F64,
21824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPROUND_F128_F64,
219e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_PPCF128_F64,
2208aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOSINT_F32_I8,
2218aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOSINT_F32_I16,
222495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F32_I32,
223495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F32_I64,
224a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F32_I128,
225de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOSINT_F64_I8,
226de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOSINT_F64_I16,
227495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F64_I32,
228495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F64_I64,
229a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F64_I128,
230be1ad4de2900451626c8d4ace07b9ea16099ea1dDuncan Sands    FPTOSINT_F80_I32,
231161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOSINT_F80_I64,
232a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F80_I128,
23324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOSINT_F128_I32,
23424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOSINT_F128_I64,
23524d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOSINT_F128_I128,
236041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands    FPTOSINT_PPCF128_I32,
237161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOSINT_PPCF128_I64,
238a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_PPCF128_I128,
2398aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOUINT_F32_I8,
2408aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOUINT_F32_I16,
241495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F32_I32,
242495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F32_I64,
243a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F32_I128,
244de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOUINT_F64_I8,
245de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOUINT_F64_I16,
246495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F64_I32,
247495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F64_I64,
248a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F64_I128,
249161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_F80_I32,
250161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_F80_I64,
251a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F80_I128,
25224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOUINT_F128_I32,
25324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOUINT_F128_I64,
25424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOUINT_F128_I128,
255041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands    FPTOUINT_PPCF128_I32,
256161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_PPCF128_I64,
257a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_PPCF128_I128,
258495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I32_F32,
259495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I32_F64,
2609bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands    SINTTOFP_I32_F80,
26124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SINTTOFP_I32_F128,
2629bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands    SINTTOFP_I32_PPCF128,
263495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I64_F32,
264495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I64_F64,
265161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SINTTOFP_I64_F80,
26624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SINTTOFP_I64_F128,
267161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SINTTOFP_I64_PPCF128,
268d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F32,
269d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F64,
270d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F80,
27124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SINTTOFP_I128_F128,
272d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_PPCF128,
273495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I32_F32,
274495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I32_F64,
275ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I32_F80,
27624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UINTTOFP_I32_F128,
277ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I32_PPCF128,
278495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I64_F32,
279495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I64_F64,
280ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I64_F80,
28124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UINTTOFP_I64_F128,
282ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I64_PPCF128,
283ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F32,
284ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F64,
285ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F80,
28624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UINTTOFP_I128_F128,
287ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_PPCF128,
288495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
289495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // COMPARISON
290495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OEQ_F32,
291495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OEQ_F64,
29224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OEQ_F128,
293495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNE_F32,
294495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNE_F64,
29524d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UNE_F128,
296495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGE_F32,
297495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGE_F64,
29824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OGE_F128,
299495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLT_F32,
300495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLT_F64,
30124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OLT_F128,
302495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLE_F32,
303495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLE_F64,
30424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OLE_F128,
305495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGT_F32,
306495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGT_F64,
30724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OGT_F128,
308495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UO_F32,
309495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UO_F64,
31024d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UO_F128,
311991d3616c8383688f1acf443cc698edef850da4dEvan Cheng    O_F32,
312991d3616c8383688f1acf443cc698edef850da4dEvan Cheng    O_F64,
31324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    O_F128,
314495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
315a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    // MEMORY
316a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMCPY,
317a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMSET,
318a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMMOVE,
319a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta
320b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands    // EXCEPTION HANDLING
321b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands    UNWIND_RESUME,
322b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands
323e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    // Family ATOMICs
324e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_1,
325e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_2,
326e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_4,
327e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_8,
328641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_VAL_COMPARE_AND_SWAP_16,
329ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_1,
330ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_2,
331ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_4,
332ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_8,
333641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_LOCK_TEST_AND_SET_16,
334e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_1,
335e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_2,
336e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_4,
337e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_8,
338641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_FETCH_AND_ADD_16,
339e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_1,
340e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_2,
341e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_4,
342e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_8,
343641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_FETCH_AND_SUB_16,
344e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_1,
345e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_2,
346e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_4,
347e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_8,
348641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_FETCH_AND_AND_16,
349e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_1,
350e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_2,
351e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_4,
352e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_8,
353641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_FETCH_AND_OR_16,
354e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_1,
355e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_2,
356e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_4,
357e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_8,
358641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_FETCH_AND_XOR_16,
359e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_1,
360e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_2,
361e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_4,
362e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_8,
363641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer    SYNC_FETCH_AND_NAND_16,
3645a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MAX_1,
3655a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MAX_2,
3665a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MAX_4,
3675a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MAX_8,
3685a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MAX_16,
3695a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMAX_1,
3705a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMAX_2,
3715a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMAX_4,
3725a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMAX_8,
3735a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMAX_16,
3745a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MIN_1,
3755a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MIN_2,
3765a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MIN_4,
3775a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MIN_8,
3785a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_MIN_16,
3795a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMIN_1,
3805a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMIN_2,
3815a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMIN_4,
3825a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMIN_8,
3835a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover    SYNC_FETCH_AND_UMIN_16,
384e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach
38515b2782ccf141930cc98507a1cb1d501fbfd4000Michael Gottesman    // Stack Protector Fail.
38615b2782ccf141930cc98507a1cb1d501fbfd4000Michael Gottesman    STACKPROTECTOR_CHECK_FAIL,
38715b2782ccf141930cc98507a1cb1d501fbfd4000Michael Gottesman
388495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNKNOWN_LIBCALL
389495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng  };
390b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
391b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPEXT - Return the FPEXT_*_* value for the given types, or
392b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
393e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPEXT(EVT OpVT, EVT RetVT);
394b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
395b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPROUND - Return the FPROUND_*_* value for the given types, or
396b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
397e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPROUND(EVT OpVT, EVT RetVT);
398b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
399b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPTOSINT - Return the FPTOSINT_*_* value for the given types, or
400b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
401e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPTOSINT(EVT OpVT, EVT RetVT);
402b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
403b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPTOUINT - Return the FPTOUINT_*_* value for the given types, or
404b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
405e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPTOUINT(EVT OpVT, EVT RetVT);
406b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
407b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getSINTTOFP - Return the SINTTOFP_*_* value for the given types, or
408b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
409e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getSINTTOFP(EVT OpVT, EVT RetVT);
410b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
411b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getUINTTOFP - Return the UINTTOFP_*_* value for the given types, or
412b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
413e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getUINTTOFP(EVT OpVT, EVT RetVT);
414495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng}
415495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng}
416495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
417495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#endif
418