RuntimeLibcalls.h revision de0118c324a3fb8b0b5afa8e46996d9b81666bfd
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".
25fabd32deb025ebd47c5eb47259d2424fd789b05cDale Johannesen  ///
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,
498983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    SDIV_I8,
50813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    SDIV_I16,
51495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SDIV_I32,
52495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SDIV_I64,
535ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    SDIV_I128,
548983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    UDIV_I8,
55813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    UDIV_I16,
56495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UDIV_I32,
57495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UDIV_I64,
585ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    UDIV_I128,
598983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    SREM_I8,
60813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    SREM_I16,
61495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SREM_I32,
62495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SREM_I64,
635ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    SREM_I128,
648983da729aa1ca99a11a3b98ae6280dfcdbadb39Anton Korobeynikov    UREM_I8,
65813090cf891325c715b9f6fb1546e6ce67fa8c8bAnton Korobeynikov    UREM_I16,
66495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UREM_I32,
67495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UREM_I64,
685ac319ac7125b009adddcc49294d2e040c4a91e5Duncan Sands    UREM_I128,
69495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    NEG_I32,
70495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    NEG_I64,
71495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
72495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // FLOATING POINT
73495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    ADD_F32,
74495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    ADD_F64,
75007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    ADD_F80,
76161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    ADD_PPCF128,
77495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SUB_F32,
78495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SUB_F64,
79007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    SUB_F80,
80161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SUB_PPCF128,
81495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    MUL_F32,
82495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    MUL_F64,
83007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    MUL_F80,
84161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    MUL_PPCF128,
85495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    DIV_F32,
86495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    DIV_F64,
87007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    DIV_F80,
88161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    DIV_PPCF128,
89495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    REM_F32,
90495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    REM_F64,
91007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    REM_F80,
92161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    REM_PPCF128,
93495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    POWI_F32,
94495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    POWI_F64,
95161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    POWI_F80,
96161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    POWI_PPCF128,
97495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SQRT_F32,
98495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SQRT_F64,
99161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SQRT_F80,
100161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SQRT_PPCF128,
1017794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_F32,
1027794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_F64,
1037794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_F80,
1047794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG_PPCF128,
1057794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_F32,
1067794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_F64,
1077794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_F80,
1087794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG2_PPCF128,
1097794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_F32,
1107794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_F64,
1117794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_F80,
1127794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    LOG10_PPCF128,
1137794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_F32,
1147794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_F64,
1157794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_F80,
1167794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP_PPCF128,
1177794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_F32,
1187794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_F64,
1197794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_F80,
1207794f2a3a7778bdbc9bdd861db1fe914450e0470Dale Johannesen    EXP2_PPCF128,
121495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SIN_F32,
122495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SIN_F64,
123007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    SIN_F80,
124007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    SIN_PPCF128,
125495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    COS_F32,
126495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    COS_F64,
127007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    COS_F80,
128007f9847c44ddbe7fd04cba362b4ec0f0f40964bDuncan Sands    COS_PPCF128,
129e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_F32,
130e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_F64,
131e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_F80,
132e54be104180d81b61c5fcc29ccb7960f9b78476eDan Gohman    POW_PPCF128,
1332bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_F32,
1342bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_F64,
1352bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_F80,
1362bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    CEIL_PPCF128,
1372bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_F32,
1382bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_F64,
1392bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_F80,
1402bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    TRUNC_PPCF128,
1412bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_F32,
1422bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_F64,
1432bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_F80,
1442bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    RINT_PPCF128,
1452bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_F32,
1462bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_F64,
1472bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_F80,
1482bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    NEARBYINT_PPCF128,
1492bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F32,
1502bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F64,
1512bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_F80,
1522bb1e3eede14dd8a965506465e2876fb1ae765c2Dan Gohman    FLOOR_PPCF128,
153d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F32,
154d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F64,
155d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_F80,
156d2c817eff1d158398fb0a620fa762bf95207922fDuncan Sands    COPYSIGN_PPCF128,
157495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
158495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // CONVERSION
159495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPEXT_F32_F64,
160927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov    FPEXT_F16_F32,
161927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov    FPROUND_F32_F16,
162495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPROUND_F64_F32,
163e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_F80_F32,
164e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_PPCF128_F32,
165e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_F80_F64,
166e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes    FPROUND_PPCF128_F64,
1678aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOSINT_F32_I8,
1688aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOSINT_F32_I16,
169495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F32_I32,
170495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F32_I64,
171a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F32_I128,
172de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOSINT_F64_I8,
173de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOSINT_F64_I16,
174495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F64_I32,
175495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOSINT_F64_I64,
176a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F64_I128,
177be1ad4de2900451626c8d4ace07b9ea16099ea1dDuncan Sands    FPTOSINT_F80_I32,
178161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOSINT_F80_I64,
179a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_F80_I128,
180041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands    FPTOSINT_PPCF128_I32,
181161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOSINT_PPCF128_I64,
182a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOSINT_PPCF128_I128,
1838aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOUINT_F32_I8,
1848aa207ee306b6a5ce753511a5f811fc1cd2468e2Sanjiv Gupta    FPTOUINT_F32_I16,
185495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F32_I32,
186495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F32_I64,
187a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F32_I128,
188de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOUINT_F64_I8,
189de0118c324a3fb8b0b5afa8e46996d9b81666bfdAnton Korobeynikov    FPTOUINT_F64_I16,
190495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F64_I32,
191495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    FPTOUINT_F64_I64,
192a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F64_I128,
193161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_F80_I32,
194161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_F80_I64,
195a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_F80_I128,
196041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands    FPTOUINT_PPCF128_I32,
197161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    FPTOUINT_PPCF128_I64,
198a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman    FPTOUINT_PPCF128_I128,
199495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I32_F32,
200495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I32_F64,
2019bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands    SINTTOFP_I32_F80,
2029bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands    SINTTOFP_I32_PPCF128,
203495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I64_F32,
204495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    SINTTOFP_I64_F64,
205161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SINTTOFP_I64_F80,
206161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen    SINTTOFP_I64_PPCF128,
207d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F32,
208d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F64,
209d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_F80,
210d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman    SINTTOFP_I128_PPCF128,
211495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I32_F32,
212495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I32_F64,
213ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I32_F80,
214ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I32_PPCF128,
215495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I64_F32,
216495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UINTTOFP_I64_F64,
217ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I64_F80,
218ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I64_PPCF128,
219ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F32,
220ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F64,
221ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_F80,
222ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands    UINTTOFP_I128_PPCF128,
223495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
224495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    // COMPARISON
225495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OEQ_F32,
226495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OEQ_F64,
227495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNE_F32,
228495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNE_F64,
229495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGE_F32,
230495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGE_F64,
231495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLT_F32,
232495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLT_F64,
233495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLE_F32,
234495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OLE_F64,
235495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGT_F32,
236495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    OGT_F64,
237495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UO_F32,
238495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UO_F64,
239991d3616c8383688f1acf443cc698edef850da4dEvan Cheng    O_F32,
240991d3616c8383688f1acf443cc698edef850da4dEvan Cheng    O_F64,
241495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
242a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    // MEMORY
243a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMCPY,
244a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMSET,
245a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta    MEMMOVE,
246a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta
247b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands    // EXCEPTION HANDLING
248b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands    UNWIND_RESUME,
249b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands
250495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng    UNKNOWN_LIBCALL
251495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng  };
252b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
253b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPEXT - Return the FPEXT_*_* value for the given types, or
254b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
255e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPEXT(EVT OpVT, EVT RetVT);
256b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
257b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPROUND - Return the FPROUND_*_* value for the given types, or
258b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
259e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPROUND(EVT OpVT, EVT RetVT);
260b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
261b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPTOSINT - Return the FPTOSINT_*_* value for the given types, or
262b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
263e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPTOSINT(EVT OpVT, EVT RetVT);
264b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
265b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getFPTOUINT - Return the FPTOUINT_*_* value for the given types, or
266b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
267e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getFPTOUINT(EVT OpVT, EVT RetVT);
268b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
269b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getSINTTOFP - Return the SINTTOFP_*_* value for the given types, or
270b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
271e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getSINTTOFP(EVT OpVT, EVT RetVT);
272b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands
273b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// getUINTTOFP - Return the UINTTOFP_*_* value for the given types, or
274b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands  /// UNKNOWN_LIBCALL if there is none.
275e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson  Libcall getUINTTOFP(EVT OpVT, EVT RetVT);
276495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng}
277495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng}
278495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng
279495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#endif
280