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,
1912bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F32,
1922bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F64,
1932bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F80,
19424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FLOOR_F128,
1952bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_PPCF128,
196d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F32,
197d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F64,
198d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F80,
19924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    COPYSIGN_F128,
200d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_PPCF128,
201495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
202495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // CONVERSION
20324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPEXT_F64_F128,
20424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPEXT_F32_F128,
205495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPEXT_F32_F64,
206927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov    FPEXT_F16_F32,
207927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov    FPROUND_F32_F16,
208495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPROUND_F64_F32,
209e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_F80_F32,
21024d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPROUND_F128_F32,
211e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_PPCF128_F32,
212e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_F80_F64,
21324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPROUND_F128_F64,
214e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_PPCF128_F64,
2158aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOSINT_F32_I8,
2168aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOSINT_F32_I16,
217495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F32_I32,
218495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F32_I64,
219a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F32_I128,
220de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOSINT_F64_I8,
221de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOSINT_F64_I16,
222495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F64_I32,
223495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F64_I64,
224a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F64_I128,
225be1ad4de2900451626c8d4ace07b9ea16099ea1dDuncan Sands    FPTOSINT_F80_I32,
226161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOSINT_F80_I64,
227a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F80_I128,
22824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOSINT_F128_I32,
22924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOSINT_F128_I64,
23024d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOSINT_F128_I128,
231041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands    FPTOSINT_PPCF128_I32,
232161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOSINT_PPCF128_I64,
233a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_PPCF128_I128,
2348aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOUINT_F32_I8,
2358aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOUINT_F32_I16,
236495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F32_I32,
237495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F32_I64,
238a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F32_I128,
239de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOUINT_F64_I8,
240de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOUINT_F64_I16,
241495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F64_I32,
242495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F64_I64,
243a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F64_I128,
244161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_F80_I32,
245161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_F80_I64,
246a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F80_I128,
24724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOUINT_F128_I32,
24824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOUINT_F128_I64,
24924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    FPTOUINT_F128_I128,
250041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands    FPTOUINT_PPCF128_I32,
251161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_PPCF128_I64,
252a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_PPCF128_I128,
253495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I32_F32,
254495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I32_F64,
2559bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands    SINTTOFP_I32_F80,
25624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SINTTOFP_I32_F128,
2579bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands    SINTTOFP_I32_PPCF128,
258495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I64_F32,
259495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I64_F64,
260161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SINTTOFP_I64_F80,
26124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SINTTOFP_I64_F128,
262161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SINTTOFP_I64_PPCF128,
263d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F32,
264d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F64,
265d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F80,
26624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    SINTTOFP_I128_F128,
267d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_PPCF128,
268495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I32_F32,
269495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I32_F64,
270ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I32_F80,
27124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UINTTOFP_I32_F128,
272ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I32_PPCF128,
273495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I64_F32,
274495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I64_F64,
275ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I64_F80,
27624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UINTTOFP_I64_F128,
277ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I64_PPCF128,
278ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F32,
279ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F64,
280ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F80,
28124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UINTTOFP_I128_F128,
282ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_PPCF128,
283495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
284495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // COMPARISON
285495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OEQ_F32,
286495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OEQ_F64,
28724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OEQ_F128,
288495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNE_F32,
289495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNE_F64,
29024d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UNE_F128,
291495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGE_F32,
292495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGE_F64,
29324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OGE_F128,
294495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLT_F32,
295495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLT_F64,
29624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OLT_F128,
297495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLE_F32,
298495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLE_F64,
29924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OLE_F128,
300495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGT_F32,
301495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGT_F64,
30224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    OGT_F128,
303495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UO_F32,
304495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UO_F64,
30524d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    UO_F128,
306991d3616c8383688f1acf443cc698edef850da4dEvan Cheng    O_F32,
307991d3616c8383688f1acf443cc698edef850da4dEvan Cheng    O_F64,
30824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover    O_F128,
309495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
310a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    // MEMORY
311a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMCPY,
312a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMSET,
313a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMMOVE,
314a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta
315b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands    // EXCEPTION HANDLING
316b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands    UNWIND_RESUME,
317b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands
318e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    // Family ATOMICs
319e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_1,
320e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_2,
321e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_4,
322e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_VAL_COMPARE_AND_SWAP_8,
323ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_1,
324ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_2,
325ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_4,
326ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach    SYNC_LOCK_TEST_AND_SET_8,
327e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_1,
328e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_2,
329e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_4,
330e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_ADD_8,
331e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_1,
332e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_2,
333e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_4,
334e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_SUB_8,
335e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_1,
336e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_2,
337e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_4,
338e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_AND_8,
339e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_1,
340e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_2,
341e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_4,
342e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_OR_8,
343e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_1,
344e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_2,
345e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_4,
346e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_XOR_8,
347e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_1,
348e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_2,
349e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_4,
350e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach    SYNC_FETCH_AND_NAND_8,
351e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach
352495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNKNOWN_LIBCALL
353495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng  };
354b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
355b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPEXT - Return the FPEXT_*_* value for the given types, or
356b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
357e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPEXT(EVT OpVT, EVT RetVT);
358b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
359b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPROUND - Return the FPROUND_*_* value for the given types, or
360b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
361e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPROUND(EVT OpVT, EVT RetVT);
362b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
363b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPTOSINT - Return the FPTOSINT_*_* value for the given types, or
364b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
365e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPTOSINT(EVT OpVT, EVT RetVT);
366b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
367b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPTOUINT - Return the FPTOUINT_*_* value for the given types, or
368b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
369e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPTOUINT(EVT OpVT, EVT RetVT);
370b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
371b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getSINTTOFP - Return the SINTTOFP_*_* value for the given types, or
372b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
373e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getSINTTOFP(EVT OpVT, EVT RetVT);
374b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
375b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getUINTTOFP - Return the UINTTOFP_*_* value for the given types, or
376b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
377e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getUINTTOFP(EVT OpVT, EVT RetVT);
378495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng}
379495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng}
380495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
381495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#endif
382