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