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