1/* 2 * Copyright 2010, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifdef USE_VFP_RUNTIME 18# define DEF_GENERIC_OR_VFP_RUNTIME(func) DEF_VFP_RUNTIME(func) 19# define DEF_LLVM_OR_VFP_RUNTIME(func) DEF_VFP_RUNTIME(func) 20#else 21# undef DEF_VFP_RUNTIME 22# define DEF_VFP_RUNTIME(func) 23# define DEF_GENERIC_OR_VFP_RUNTIME(func) DEF_GENERIC_RUNTIME(func) 24# define DEF_LLVM_OR_VFP_RUNTIME(func) DEF_LLVM_RUNTIME(func) 25#endif 26 27// Sorted 28DEF_LLVM_RUNTIME(__absvdi2) 29DEF_LLVM_RUNTIME(__absvsi2) 30 31DEF_GENERIC_OR_VFP_RUNTIME(__adddf3) 32DEF_GENERIC_OR_VFP_RUNTIME(__addsf3) 33 34DEF_LLVM_RUNTIME(__addvdi3) 35DEF_LLVM_RUNTIME(__addvsi3) 36 37#if defined(__arm__) 38 // ARM Runtime ABI: 39 // http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043c/IHI0043C_rtabi.pdf 40 // See also: external/llvm/lib/Target/ARM/ARMISelLowering.cpp 41 42 DEF_GENERIC_RUNTIME(__aeabi_d2f) 43 DEF_GENERIC_RUNTIME(__aeabi_d2iz) 44 DEF_GENERIC_RUNTIME(__aeabi_d2lz) 45 DEF_GENERIC_RUNTIME(__aeabi_d2uiz) 46 DEF_GENERIC_RUNTIME(__aeabi_d2ulz) 47 DEF_GENERIC_RUNTIME(__aeabi_dadd) 48 DEF_GENERIC_RUNTIME(__aeabi_dcmpeq) 49 DEF_GENERIC_RUNTIME(__aeabi_dcmpge) 50 DEF_GENERIC_RUNTIME(__aeabi_dcmpgt) 51 DEF_GENERIC_RUNTIME(__aeabi_dcmple) 52 DEF_GENERIC_RUNTIME(__aeabi_dcmplt) 53 DEF_GENERIC_RUNTIME(__aeabi_dcmpun) 54 DEF_GENERIC_RUNTIME(__aeabi_ddiv) 55 DEF_GENERIC_RUNTIME(__aeabi_dmul) 56 DEF_GENERIC_RUNTIME(__aeabi_dsub) 57 DEF_GENERIC_RUNTIME(__aeabi_f2d) 58 DEF_GENERIC_RUNTIME(__aeabi_f2iz) 59 DEF_GENERIC_RUNTIME(__aeabi_f2lz) 60 DEF_GENERIC_RUNTIME(__aeabi_f2uiz) 61 DEF_GENERIC_RUNTIME(__aeabi_f2ulz) 62 DEF_GENERIC_RUNTIME(__aeabi_fadd) 63 DEF_GENERIC_RUNTIME(__aeabi_fcmpeq) 64 DEF_GENERIC_RUNTIME(__aeabi_fcmpge) 65 DEF_GENERIC_RUNTIME(__aeabi_fcmpgt) 66 DEF_GENERIC_RUNTIME(__aeabi_fcmple) 67 DEF_GENERIC_RUNTIME(__aeabi_fcmplt) 68 DEF_GENERIC_RUNTIME(__aeabi_fcmpun) 69 DEF_GENERIC_RUNTIME(__aeabi_fdiv) 70 DEF_GENERIC_RUNTIME(__aeabi_fmul) 71 DEF_GENERIC_RUNTIME(__aeabi_fsub) 72 DEF_GENERIC_RUNTIME(__aeabi_i2d) 73 DEF_GENERIC_RUNTIME(__aeabi_i2f) 74 DEF_GENERIC_RUNTIME(__aeabi_idiv) 75 DEF_GENERIC_RUNTIME(__aeabi_l2d) 76 DEF_GENERIC_RUNTIME(__aeabi_l2f) 77 DEF_GENERIC_RUNTIME(__aeabi_lasr) 78 DEF_GENERIC_RUNTIME(__aeabi_ldivmod) 79 DEF_GENERIC_RUNTIME(__aeabi_llsl) 80 DEF_GENERIC_RUNTIME(__aeabi_llsr) 81 DEF_GENERIC_RUNTIME(__aeabi_lmul) 82 DEF_GENERIC_RUNTIME(__aeabi_memcpy) 83 DEF_GENERIC_RUNTIME(__aeabi_memmove) 84 DEF_GENERIC_RUNTIME(__aeabi_memset) 85 DEF_GENERIC_RUNTIME(__aeabi_ui2d) 86 DEF_GENERIC_RUNTIME(__aeabi_ui2f) 87 DEF_GENERIC_RUNTIME(__aeabi_uidiv) 88 DEF_GENERIC_RUNTIME(__aeabi_ul2d) 89 DEF_GENERIC_RUNTIME(__aeabi_ul2f) 90 DEF_GENERIC_RUNTIME(__aeabi_uldivmod) 91#endif // defined(__arm__) 92 93#if !defined(__i386__) && !defined(__SSE2__) 94 DEF_LLVM_RUNTIME(__ashldi3) 95#endif 96#if !defined(ANDROID) /* has one in bionic */ 97 DEF_LLVM_RUNTIME(__ashrdi3) 98#endif 99#if defined(__mips__) 100 DEF_GENERIC_RUNTIME(__ashrdi3) 101#endif 102 103#ifdef USE_VFP_RUNTIME 104// DEF_GENERIC_RUNTIME(__bswapdi2) 105// DEF_GENERIC_RUNTIME(__bswapsi2) 106#endif 107 108DEF_LLVM_RUNTIME(__clzdi2) 109DEF_LLVM_RUNTIME(__clzsi2) 110DEF_LLVM_RUNTIME(__cmpdi2) 111DEF_LLVM_RUNTIME(__ctzdi2) 112DEF_LLVM_RUNTIME(__ctzsi2) 113 114#if !defined(ANDROID) /* no complex extension */ 115 DEF_LLVM_RUNTIME(__divdc3) 116#endif 117 118DEF_GENERIC_OR_VFP_RUNTIME(__divdf3) 119 120DEF_LLVM_RUNTIME(__divdi3) 121DEF_LLVM_RUNTIME(__divsi3) 122 123#if !defined(ANDROID) /* no complex extension */ 124 DEF_LLVM_RUNTIME(__divsc3) 125#endif 126 127DEF_GENERIC_OR_VFP_RUNTIME(__divsf3) 128 129DEF_LLVM_RUNTIME(__eprintf) 130 131DEF_GENERIC_OR_VFP_RUNTIME(__eqdf2) 132DEF_GENERIC_OR_VFP_RUNTIME(__eqsf2) 133DEF_GENERIC_OR_VFP_RUNTIME(__extendsfdf2) 134 135DEF_LLVM_RUNTIME(__ffsdi2) 136DEF_LLVM_RUNTIME(__fixdfdi) 137 138DEF_GENERIC_OR_VFP_RUNTIME(__fixdfsi) 139 140DEF_LLVM_RUNTIME(__fixsfdi) 141 142DEF_GENERIC_OR_VFP_RUNTIME(__fixsfsi) 143 144DEF_LLVM_RUNTIME(__fixunsdfdi) 145DEF_LLVM_OR_VFP_RUNTIME(__fixunsdfsi) 146DEF_LLVM_RUNTIME(__fixunssfdi) 147 148DEF_LLVM_OR_VFP_RUNTIME(__fixunssfsi) 149 150#if !defined(__i386__) 151 DEF_LLVM_RUNTIME(__floatdidf) 152 DEF_LLVM_RUNTIME(__floatdisf) 153#endif 154 155DEF_GENERIC_OR_VFP_RUNTIME(__floatsidf) 156DEF_GENERIC_OR_VFP_RUNTIME(__floatsisf) 157 158#if !defined(__i386__) 159 DEF_LLVM_RUNTIME(__floatundidf) 160 DEF_LLVM_RUNTIME(__floatundisf) 161#endif 162 163DEF_GENERIC_RUNTIME(__floatunsidf) 164DEF_GENERIC_RUNTIME(__floatunsisf) 165 166DEF_VFP_RUNTIME(__floatunssidf) 167DEF_VFP_RUNTIME(__floatunssisf) 168 169DEF_GENERIC_OR_VFP_RUNTIME(__gedf2) 170DEF_GENERIC_OR_VFP_RUNTIME(__gesf2) 171DEF_VFP_RUNTIME(__gtdf2) 172DEF_VFP_RUNTIME(__gtsf2) 173 174DEF_GENERIC_OR_VFP_RUNTIME(__ledf2) 175DEF_GENERIC_OR_VFP_RUNTIME(__lesf2) 176 177#if !defined(__i386__) && !defined(__SSE2__) 178 DEF_LLVM_RUNTIME(__lshrdi3) 179#endif 180 181DEF_VFP_RUNTIME(__ltdf2) 182DEF_VFP_RUNTIME(__ltsf2) 183 184DEF_LLVM_RUNTIME(__moddi3) 185DEF_LLVM_RUNTIME(__modsi3) 186 187#ifndef ANDROID // no complex extension 188 DEF_LLVM_RUNTIME(__muldc3) 189#endif 190 191DEF_GENERIC_OR_VFP_RUNTIME(__muldf3) 192#if !defined(__i386__) 193 DEF_LLVM_RUNTIME(__muldi3) 194#endif 195 196#ifndef ANDROID // no complex extension 197 DEF_LLVM_RUNTIME(__mulsc3) 198#endif 199 200DEF_GENERIC_OR_VFP_RUNTIME(__mulsf3) 201 202DEF_LLVM_RUNTIME(__mulvdi3) 203DEF_LLVM_RUNTIME(__mulvsi3) 204 205DEF_VFP_RUNTIME(__nedf2) 206 207DEF_GENERIC_OR_VFP_RUNTIME(__negdf2) 208 209DEF_LLVM_RUNTIME(__negdi2) 210 211DEF_GENERIC_OR_VFP_RUNTIME(__negsf2) 212 213DEF_LLVM_RUNTIME(__negvdi2) 214DEF_LLVM_RUNTIME(__negvsi2) 215 216DEF_VFP_RUNTIME(__nesf2) 217 218DEF_LLVM_RUNTIME(__paritydi2) 219DEF_LLVM_RUNTIME(__paritysi2) 220DEF_LLVM_RUNTIME(__popcountdi2) 221DEF_LLVM_RUNTIME(__popcountsi2) 222DEF_LLVM_RUNTIME(__powidf2) 223DEF_LLVM_RUNTIME(__powisf2) 224 225DEF_GENERIC_OR_VFP_RUNTIME(__subdf3) 226DEF_GENERIC_OR_VFP_RUNTIME(__subsf3) 227 228DEF_LLVM_RUNTIME(__subvdi3) 229DEF_LLVM_RUNTIME(__subvsi3) 230 231DEF_GENERIC_OR_VFP_RUNTIME(__truncdfsf2) 232 233DEF_LLVM_RUNTIME(__ucmpdi2) 234DEF_LLVM_RUNTIME(__udivdi3) 235DEF_LLVM_RUNTIME(__udivmoddi4) 236DEF_LLVM_RUNTIME(__udivsi3) 237DEF_LLVM_RUNTIME(__umoddi3) 238DEF_LLVM_RUNTIME(__umodsi3) 239 240DEF_GENERIC_OR_VFP_RUNTIME(__unorddf2) 241DEF_GENERIC_OR_VFP_RUNTIME(__unordsf2) 242 243#undef DEF_GENERIC_RUNTIME 244#undef DEF_LLVM_RUNTIME 245#undef DEF_VFP_RUNTIME 246#undef DEF_BCC_RUNTIME 247