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 28 DEF_LLVM_RUNTIME(__absvdi2) 29 DEF_LLVM_RUNTIME(__absvsi2) 30 31 DEF_GENERIC_OR_VFP_RUNTIME(__adddf3) 32 DEF_GENERIC_OR_VFP_RUNTIME(__addsf3) 33 34 DEF_LLVM_RUNTIME(__addvdi3) 35 DEF_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 108 DEF_LLVM_RUNTIME(__clzdi2) 109 DEF_LLVM_RUNTIME(__clzsi2) 110 DEF_LLVM_RUNTIME(__cmpdi2) 111 DEF_LLVM_RUNTIME(__ctzdi2) 112 DEF_LLVM_RUNTIME(__ctzsi2) 113 114 #if !defined(ANDROID) /* no complex extension */ 115 DEF_LLVM_RUNTIME(__divdc3) 116 #endif 117 118 DEF_GENERIC_OR_VFP_RUNTIME(__divdf3) 119 120 #if !defined(__i386__) 121 DEF_LLVM_RUNTIME(__divdi3) 122 #endif 123 DEF_LLVM_RUNTIME(__divsi3) 124 125 #if !defined(ANDROID) /* no complex extension */ 126 DEF_LLVM_RUNTIME(__divsc3) 127 #endif 128 129 DEF_GENERIC_OR_VFP_RUNTIME(__divsf3) 130 131 DEF_LLVM_RUNTIME(__eprintf) 132 133 DEF_GENERIC_OR_VFP_RUNTIME(__eqdf2) 134 DEF_GENERIC_OR_VFP_RUNTIME(__eqsf2) 135 DEF_GENERIC_OR_VFP_RUNTIME(__extendsfdf2) 136 137 DEF_LLVM_RUNTIME(__ffsdi2) 138 DEF_LLVM_RUNTIME(__fixdfdi) 139 140 DEF_GENERIC_OR_VFP_RUNTIME(__fixdfsi) 141 142 DEF_LLVM_RUNTIME(__fixsfdi) 143 144 DEF_GENERIC_OR_VFP_RUNTIME(__fixsfsi) 145 146 DEF_LLVM_RUNTIME(__fixunsdfdi) 147 DEF_LLVM_OR_VFP_RUNTIME(__fixunsdfsi) 148 DEF_LLVM_RUNTIME(__fixunssfdi) 149 150 DEF_LLVM_OR_VFP_RUNTIME(__fixunssfsi) 151 152 #if !defined(__i386__) 153 DEF_LLVM_RUNTIME(__floatdidf) 154 DEF_LLVM_RUNTIME(__floatdisf) 155 #endif 156 157 DEF_GENERIC_OR_VFP_RUNTIME(__floatsidf) 158 DEF_GENERIC_OR_VFP_RUNTIME(__floatsisf) 159 160 #if !defined(__i386__) 161 DEF_LLVM_RUNTIME(__floatundidf) 162 DEF_LLVM_RUNTIME(__floatundisf) 163 #endif 164 165 DEF_GENERIC_RUNTIME(__floatunsidf) 166 DEF_GENERIC_RUNTIME(__floatunsisf) 167 168 DEF_VFP_RUNTIME(__floatunssidf) 169 DEF_VFP_RUNTIME(__floatunssisf) 170 171 DEF_GENERIC_OR_VFP_RUNTIME(__gedf2) 172 DEF_GENERIC_OR_VFP_RUNTIME(__gesf2) 173 DEF_VFP_RUNTIME(__gtdf2) 174 DEF_VFP_RUNTIME(__gtsf2) 175 176 DEF_GENERIC_OR_VFP_RUNTIME(__ledf2) 177 DEF_GENERIC_OR_VFP_RUNTIME(__lesf2) 178 179 #if !defined(__i386__) && !defined(__SSE2__) 180 DEF_LLVM_RUNTIME(__lshrdi3) 181 #endif 182 183 DEF_VFP_RUNTIME(__ltdf2) 184 DEF_VFP_RUNTIME(__ltsf2) 185 186 #if !defined(__i386__) 187 DEF_LLVM_RUNTIME(__moddi3) 188 #endif 189 DEF_LLVM_RUNTIME(__modsi3) 190 191 #ifndef ANDROID // no complex extension 192 DEF_LLVM_RUNTIME(__muldc3) 193 #endif 194 195 DEF_GENERIC_OR_VFP_RUNTIME(__muldf3) 196 #if !defined(__i386__) 197 DEF_LLVM_RUNTIME(__muldi3) 198 #endif 199 200 #ifndef ANDROID // no complex extension 201 DEF_LLVM_RUNTIME(__mulsc3) 202 #endif 203 204 DEF_GENERIC_OR_VFP_RUNTIME(__mulsf3) 205 206 DEF_LLVM_RUNTIME(__mulvdi3) 207 DEF_LLVM_RUNTIME(__mulvsi3) 208 209 DEF_VFP_RUNTIME(__nedf2) 210 211 DEF_GENERIC_OR_VFP_RUNTIME(__negdf2) 212 213 DEF_LLVM_RUNTIME(__negdi2) 214 215 DEF_GENERIC_OR_VFP_RUNTIME(__negsf2) 216 217 DEF_LLVM_RUNTIME(__negvdi2) 218 DEF_LLVM_RUNTIME(__negvsi2) 219 220 DEF_VFP_RUNTIME(__nesf2) 221 222 DEF_LLVM_RUNTIME(__paritydi2) 223 DEF_LLVM_RUNTIME(__paritysi2) 224 DEF_LLVM_RUNTIME(__popcountdi2) 225 DEF_LLVM_RUNTIME(__popcountsi2) 226 DEF_LLVM_RUNTIME(__powidf2) 227 DEF_LLVM_RUNTIME(__powisf2) 228 229 DEF_GENERIC_OR_VFP_RUNTIME(__subdf3) 230 DEF_GENERIC_OR_VFP_RUNTIME(__subsf3) 231 232 DEF_LLVM_RUNTIME(__subvdi3) 233 DEF_LLVM_RUNTIME(__subvsi3) 234 235 DEF_GENERIC_OR_VFP_RUNTIME(__truncdfsf2) 236 237 DEF_LLVM_RUNTIME(__ucmpdi2) 238 #if !defined(__i386__) 239 DEF_LLVM_RUNTIME(__udivdi3) 240 #endif 241 DEF_LLVM_RUNTIME(__udivmoddi4) 242 DEF_LLVM_RUNTIME(__udivsi3) 243 #if !defined(__i386__) 244 DEF_LLVM_RUNTIME(__umoddi3) 245 #endif 246 DEF_LLVM_RUNTIME(__umodsi3) 247 248 DEF_GENERIC_OR_VFP_RUNTIME(__unorddf2) 249 DEF_GENERIC_OR_VFP_RUNTIME(__unordsf2) 250 251 #undef DEF_GENERIC_RUNTIME 252 #undef DEF_LLVM_RUNTIME 253 #undef DEF_VFP_RUNTIME 254 #undef DEF_BCC_RUNTIME 255