1bd9f36f4db42f4b73caeb8cfe04e98f047d99375Duncan P. N. Exon Smith//===-- CodeGen/RuntimeLibcalls.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, 20637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMIN_F32, 20737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMIN_F64, 20837ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMIN_F80, 20937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMIN_F128, 21037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMIN_PPCF128, 21137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMAX_F32, 21237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMAX_F64, 21337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMAX_F80, 21437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMAX_F128, 21537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FMAX_PPCF128, 216495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 217495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng // CONVERSION 21824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPEXT_F64_F128, 21924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPEXT_F32_F128, 220495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPEXT_F32_F64, 221927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov FPEXT_F16_F32, 222927411b7ce0b7852fe4f392d8cd4faaa3881f852Anton Korobeynikov FPROUND_F32_F16, 22337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FPROUND_F64_F16, 22437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FPROUND_F80_F16, 22537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FPROUND_F128_F16, 22637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines FPROUND_PPCF128_F16, 227495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPROUND_F64_F32, 228e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes FPROUND_F80_F32, 22924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPROUND_F128_F32, 230e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes FPROUND_PPCF128_F32, 231e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes FPROUND_F80_F64, 23224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPROUND_F128_F64, 233e36bfe678df09f46e1eac60b15105c1ccd2c5382Bruno Cardoso Lopes FPROUND_PPCF128_F64, 234495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F32_I32, 235495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F32_I64, 236a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_F32_I128, 237495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F64_I32, 238495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOSINT_F64_I64, 239a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_F64_I128, 240be1ad4de2900451626c8d4ace07b9ea16099ea1dDuncan Sands FPTOSINT_F80_I32, 241161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOSINT_F80_I64, 242a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_F80_I128, 24324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPTOSINT_F128_I32, 24424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPTOSINT_F128_I64, 24524d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPTOSINT_F128_I128, 246041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands FPTOSINT_PPCF128_I32, 247161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOSINT_PPCF128_I64, 248a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOSINT_PPCF128_I128, 249495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F32_I32, 250495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F32_I64, 251a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_F32_I128, 252495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F64_I32, 253495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng FPTOUINT_F64_I64, 254a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_F64_I128, 255161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOUINT_F80_I32, 256161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOUINT_F80_I64, 257a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_F80_I128, 25824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPTOUINT_F128_I32, 25924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPTOUINT_F128_I64, 26024d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover FPTOUINT_F128_I128, 261041cde26eaf4ef6171ff1a44aeedd08d7a1cba6cDuncan Sands FPTOUINT_PPCF128_I32, 262161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen FPTOUINT_PPCF128_I64, 263a2e9485e34f1348526ed104dbdc194673e291077Dan Gohman FPTOUINT_PPCF128_I128, 264495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I32_F32, 265495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I32_F64, 2669bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands SINTTOFP_I32_F80, 26724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover SINTTOFP_I32_F128, 2689bed0f58eb7f5e9e22d062f3880a5fabfdd0dfddDuncan Sands SINTTOFP_I32_PPCF128, 269495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I64_F32, 270495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng SINTTOFP_I64_F64, 271161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SINTTOFP_I64_F80, 27224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover SINTTOFP_I64_F128, 273161e897b0fb35d156b2fe720fadabd975b0d6723Dale Johannesen SINTTOFP_I64_PPCF128, 274d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_F32, 275d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_F64, 276d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_F80, 27724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover SINTTOFP_I128_F128, 278d91446de7a89a22c8ea1cbfd40fe2528467a4ccbDan Gohman SINTTOFP_I128_PPCF128, 279495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I32_F32, 280495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I32_F64, 281ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I32_F80, 28224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover UINTTOFP_I32_F128, 283ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I32_PPCF128, 284495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I64_F32, 285495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UINTTOFP_I64_F64, 286ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I64_F80, 28724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover UINTTOFP_I64_F128, 288ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I64_PPCF128, 289ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I128_F32, 290ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I128_F64, 291ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I128_F80, 29224d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover UINTTOFP_I128_F128, 293ac6cecec189ba9689c42543c3106c02b96d788daDuncan Sands UINTTOFP_I128_PPCF128, 294495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 295495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng // COMPARISON 296495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OEQ_F32, 297495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OEQ_F64, 29824d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover OEQ_F128, 299495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UNE_F32, 300495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UNE_F64, 30124d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover UNE_F128, 302495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGE_F32, 303495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGE_F64, 30424d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover OGE_F128, 305495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLT_F32, 306495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLT_F64, 30724d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover OLT_F128, 308495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLE_F32, 309495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OLE_F64, 31024d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover OLE_F128, 311495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGT_F32, 312495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng OGT_F64, 31324d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover OGT_F128, 314495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UO_F32, 315495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UO_F64, 31624d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover UO_F128, 317991d3616c8383688f1acf443cc698edef850da4dEvan Cheng O_F32, 318991d3616c8383688f1acf443cc698edef850da4dEvan Cheng O_F64, 31924d315dc053e8130593a8053bd6dc0245632f5f3Tim Northover O_F128, 320495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 321a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta // MEMORY 322a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta MEMCPY, 323a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta MEMSET, 324a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta MEMMOVE, 325a114baa5bf0d70aed8b8cf576a864005c0d6a128Sanjiv Gupta 326b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands // EXCEPTION HANDLING 327b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands UNWIND_RESUME, 328b0f1e1780c736c62fb99e5824825d2a60a53b53bDuncan Sands 329e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach // Family ATOMICs 330e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_VAL_COMPARE_AND_SWAP_1, 331e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_VAL_COMPARE_AND_SWAP_2, 332e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_VAL_COMPARE_AND_SWAP_4, 333e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_VAL_COMPARE_AND_SWAP_8, 334641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_VAL_COMPARE_AND_SWAP_16, 335ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach SYNC_LOCK_TEST_AND_SET_1, 336ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach SYNC_LOCK_TEST_AND_SET_2, 337ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach SYNC_LOCK_TEST_AND_SET_4, 338ef6eb9c7ab7967790566c5e2d47977d89fc060eeJim Grosbach SYNC_LOCK_TEST_AND_SET_8, 339641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_LOCK_TEST_AND_SET_16, 340e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_ADD_1, 341e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_ADD_2, 342e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_ADD_4, 343e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_ADD_8, 344641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_FETCH_AND_ADD_16, 345e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_SUB_1, 346e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_SUB_2, 347e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_SUB_4, 348e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_SUB_8, 349641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_FETCH_AND_SUB_16, 350e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_AND_1, 351e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_AND_2, 352e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_AND_4, 353e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_AND_8, 354641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_FETCH_AND_AND_16, 355e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_OR_1, 356e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_OR_2, 357e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_OR_4, 358e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_OR_8, 359641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_FETCH_AND_OR_16, 360e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_XOR_1, 361e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_XOR_2, 362e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_XOR_4, 363e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_XOR_8, 364641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_FETCH_AND_XOR_16, 365e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_NAND_1, 366e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_NAND_2, 367e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_NAND_4, 368e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach SYNC_FETCH_AND_NAND_8, 369641bea117d2f5e68c11156b9eea1c9270825dfb9David Majnemer SYNC_FETCH_AND_NAND_16, 3705a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MAX_1, 3715a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MAX_2, 3725a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MAX_4, 3735a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MAX_8, 3745a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MAX_16, 3755a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMAX_1, 3765a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMAX_2, 3775a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMAX_4, 3785a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMAX_8, 3795a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMAX_16, 3805a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MIN_1, 3815a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MIN_2, 3825a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MIN_4, 3835a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MIN_8, 3845a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_MIN_16, 3855a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMIN_1, 3865a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMIN_2, 3875a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMIN_4, 3885a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMIN_8, 3895a42ae81f742aaab826b7a72cb0a9a7e5a957a07Tim Northover SYNC_FETCH_AND_UMIN_16, 390e03262fcfc09356a0e3ec589041bc2e0248944e9Jim Grosbach 39115b2782ccf141930cc98507a1cb1d501fbfd4000Michael Gottesman // Stack Protector Fail. 39215b2782ccf141930cc98507a1cb1d501fbfd4000Michael Gottesman STACKPROTECTOR_CHECK_FAIL, 39315b2782ccf141930cc98507a1cb1d501fbfd4000Michael Gottesman 394495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng UNKNOWN_LIBCALL 395495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng }; 396b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands 397b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// getFPEXT - Return the FPEXT_*_* value for the given types, or 398b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// UNKNOWN_LIBCALL if there is none. 399e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson Libcall getFPEXT(EVT OpVT, EVT RetVT); 400b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands 401b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// getFPROUND - Return the FPROUND_*_* value for the given types, or 402b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// UNKNOWN_LIBCALL if there is none. 403e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson Libcall getFPROUND(EVT OpVT, EVT RetVT); 404b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands 405b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// getFPTOSINT - Return the FPTOSINT_*_* value for the given types, or 406b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// UNKNOWN_LIBCALL if there is none. 407e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson Libcall getFPTOSINT(EVT OpVT, EVT RetVT); 408b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands 409b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// getFPTOUINT - Return the FPTOUINT_*_* value for the given types, or 410b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// UNKNOWN_LIBCALL if there is none. 411e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson Libcall getFPTOUINT(EVT OpVT, EVT RetVT); 412b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands 413b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// getSINTTOFP - Return the SINTTOFP_*_* value for the given types, or 414b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// UNKNOWN_LIBCALL if there is none. 415e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson Libcall getSINTTOFP(EVT OpVT, EVT RetVT); 416b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands 417b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// getUINTTOFP - Return the UINTTOFP_*_* value for the given types, or 418b2ff885aaed8f9b033b16ca78d645650efc32433Duncan Sands /// UNKNOWN_LIBCALL if there is none. 419e50ed30282bb5b4a9ed952580523f2dda16215acOwen Anderson Libcall getUINTTOFP(EVT OpVT, EVT RetVT); 4204c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar 4214c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar /// Return the SYNC_FETCH_AND_* value for the given opcode and type, or 4224c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar /// UNKNOWN_LIBCALL if there is none. 4234c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainar Libcall getATOMIC(unsigned Opc, MVT VT); 424495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng} 425495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng} 426495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng 427495600120e9d6c7599c599b7b16a9e8789c65aa5Evan Cheng#endif 428