/* * Copyright 2010, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifdef USE_VFP_RUNTIME # define DEF_GENERIC_OR_VFP_RUNTIME(func) DEF_VFP_RUNTIME(func) # define DEF_LLVM_OR_VFP_RUNTIME(func) DEF_VFP_RUNTIME(func) #else # undef DEF_VFP_RUNTIME # define DEF_VFP_RUNTIME(func) # define DEF_GENERIC_OR_VFP_RUNTIME(func) DEF_GENERIC_RUNTIME(func) # define DEF_LLVM_OR_VFP_RUNTIME(func) DEF_LLVM_RUNTIME(func) #endif // Sorted DEF_LLVM_RUNTIME(__absvdi2) DEF_LLVM_RUNTIME(__absvsi2) DEF_GENERIC_OR_VFP_RUNTIME(__adddf3) DEF_GENERIC_OR_VFP_RUNTIME(__addsf3) DEF_LLVM_RUNTIME(__addvdi3) DEF_LLVM_RUNTIME(__addvsi3) #if defined(__arm__) // ARM Runtime ABI: // http://infocenter.arm.com/help/topic/com.arm.doc.ihi0043c/IHI0043C_rtabi.pdf // See also: external/llvm/lib/Target/ARM/ARMISelLowering.cpp DEF_GENERIC_RUNTIME(__aeabi_d2f) DEF_GENERIC_RUNTIME(__aeabi_d2iz) DEF_GENERIC_RUNTIME(__aeabi_d2lz) DEF_GENERIC_RUNTIME(__aeabi_d2uiz) DEF_GENERIC_RUNTIME(__aeabi_d2ulz) DEF_GENERIC_RUNTIME(__aeabi_dadd) DEF_GENERIC_RUNTIME(__aeabi_dcmpeq) DEF_GENERIC_RUNTIME(__aeabi_dcmpge) DEF_GENERIC_RUNTIME(__aeabi_dcmpgt) DEF_GENERIC_RUNTIME(__aeabi_dcmple) DEF_GENERIC_RUNTIME(__aeabi_dcmplt) DEF_GENERIC_RUNTIME(__aeabi_dcmpun) DEF_GENERIC_RUNTIME(__aeabi_ddiv) DEF_GENERIC_RUNTIME(__aeabi_dmul) DEF_GENERIC_RUNTIME(__aeabi_dsub) DEF_GENERIC_RUNTIME(__aeabi_f2d) DEF_GENERIC_RUNTIME(__aeabi_f2iz) DEF_GENERIC_RUNTIME(__aeabi_f2lz) DEF_GENERIC_RUNTIME(__aeabi_f2uiz) DEF_GENERIC_RUNTIME(__aeabi_f2ulz) DEF_GENERIC_RUNTIME(__aeabi_fadd) DEF_GENERIC_RUNTIME(__aeabi_fcmpeq) DEF_GENERIC_RUNTIME(__aeabi_fcmpge) DEF_GENERIC_RUNTIME(__aeabi_fcmpgt) DEF_GENERIC_RUNTIME(__aeabi_fcmple) DEF_GENERIC_RUNTIME(__aeabi_fcmplt) DEF_GENERIC_RUNTIME(__aeabi_fcmpun) DEF_GENERIC_RUNTIME(__aeabi_fdiv) DEF_GENERIC_RUNTIME(__aeabi_fmul) DEF_GENERIC_RUNTIME(__aeabi_fsub) DEF_GENERIC_RUNTIME(__aeabi_i2d) DEF_GENERIC_RUNTIME(__aeabi_i2f) DEF_GENERIC_RUNTIME(__aeabi_idiv) DEF_GENERIC_RUNTIME(__aeabi_l2d) DEF_GENERIC_RUNTIME(__aeabi_l2f) DEF_GENERIC_RUNTIME(__aeabi_lasr) DEF_GENERIC_RUNTIME(__aeabi_ldivmod) DEF_GENERIC_RUNTIME(__aeabi_llsl) DEF_GENERIC_RUNTIME(__aeabi_llsr) DEF_GENERIC_RUNTIME(__aeabi_lmul) DEF_GENERIC_RUNTIME(__aeabi_memcpy) DEF_GENERIC_RUNTIME(__aeabi_memmove) DEF_GENERIC_RUNTIME(__aeabi_memset) DEF_GENERIC_RUNTIME(__aeabi_ui2d) DEF_GENERIC_RUNTIME(__aeabi_ui2f) DEF_GENERIC_RUNTIME(__aeabi_uidiv) DEF_GENERIC_RUNTIME(__aeabi_ul2d) DEF_GENERIC_RUNTIME(__aeabi_ul2f) DEF_GENERIC_RUNTIME(__aeabi_uldivmod) #endif // defined(__arm__) #if !defined(__i386__) && !defined(__SSE2__) DEF_LLVM_RUNTIME(__ashldi3) #endif #ifndef ANDROID // has one in bionic DEF_LLVM_RUNTIME(__ashrdi3) #endif #ifdef USE_VFP_RUNTIME // DEF_GENERIC_RUNTIME(__bswapdi2) // DEF_GENERIC_RUNTIME(__bswapsi2) #endif DEF_LLVM_RUNTIME(__clzdi2) DEF_LLVM_RUNTIME(__clzsi2) DEF_LLVM_RUNTIME(__cmpdi2) DEF_LLVM_RUNTIME(__ctzdi2) DEF_LLVM_RUNTIME(__ctzsi2) #ifndef ANDROID // no complex extension DEF_LLVM_RUNTIME(__divdc3) #endif DEF_GENERIC_OR_VFP_RUNTIME(__divdf3) #if !defined(__i386__) DEF_LLVM_RUNTIME(__divdi3) #endif DEF_LLVM_RUNTIME(__divsi3) #ifndef ANDROID // no complex extension DEF_LLVM_RUNTIME(__divsc3) #endif DEF_GENERIC_OR_VFP_RUNTIME(__divsf3) DEF_LLVM_RUNTIME(__eprintf) DEF_GENERIC_OR_VFP_RUNTIME(__eqdf2) DEF_GENERIC_OR_VFP_RUNTIME(__eqsf2) DEF_GENERIC_OR_VFP_RUNTIME(__extendsfdf2) DEF_LLVM_RUNTIME(__ffsdi2) DEF_LLVM_RUNTIME(__fixdfdi) DEF_GENERIC_OR_VFP_RUNTIME(__fixdfsi) DEF_LLVM_RUNTIME(__fixsfdi) DEF_GENERIC_OR_VFP_RUNTIME(__fixsfsi) DEF_LLVM_RUNTIME(__fixunsdfdi) DEF_LLVM_OR_VFP_RUNTIME(__fixunsdfsi) DEF_LLVM_RUNTIME(__fixunssfdi) DEF_LLVM_OR_VFP_RUNTIME(__fixunssfsi) #if !defined(__i386__) DEF_LLVM_RUNTIME(__floatdidf) DEF_LLVM_RUNTIME(__floatdisf) #endif DEF_GENERIC_OR_VFP_RUNTIME(__floatsidf) DEF_GENERIC_OR_VFP_RUNTIME(__floatsisf) #if !defined(__i386__) DEF_LLVM_RUNTIME(__floatundidf) DEF_LLVM_RUNTIME(__floatundisf) #endif DEF_GENERIC_RUNTIME(__floatunsidf) DEF_GENERIC_RUNTIME(__floatunsisf) DEF_VFP_RUNTIME(__floatunssidf) DEF_VFP_RUNTIME(__floatunssisf) DEF_GENERIC_OR_VFP_RUNTIME(__gedf2) DEF_GENERIC_OR_VFP_RUNTIME(__gesf2) DEF_VFP_RUNTIME(__gtdf2) DEF_VFP_RUNTIME(__gtsf2) DEF_GENERIC_OR_VFP_RUNTIME(__ledf2) DEF_GENERIC_OR_VFP_RUNTIME(__lesf2) #if !defined(__i386__) && !defined(__SSE2__) DEF_LLVM_RUNTIME(__lshrdi3) #endif DEF_VFP_RUNTIME(__ltdf2) DEF_VFP_RUNTIME(__ltsf2) #if !defined(__i386__) DEF_LLVM_RUNTIME(__moddi3) #endif DEF_LLVM_RUNTIME(__modsi3) #ifndef ANDROID // no complex extension DEF_LLVM_RUNTIME(__muldc3) #endif DEF_GENERIC_OR_VFP_RUNTIME(__muldf3) #if !defined(__i386__) DEF_LLVM_RUNTIME(__muldi3) #endif #ifndef ANDROID // no complex extension DEF_LLVM_RUNTIME(__mulsc3) #endif DEF_GENERIC_OR_VFP_RUNTIME(__mulsf3) DEF_LLVM_RUNTIME(__mulvdi3) DEF_LLVM_RUNTIME(__mulvsi3) DEF_VFP_RUNTIME(__nedf2) DEF_GENERIC_OR_VFP_RUNTIME(__negdf2) DEF_LLVM_RUNTIME(__negdi2) DEF_GENERIC_OR_VFP_RUNTIME(__negsf2) DEF_LLVM_RUNTIME(__negvdi2) DEF_LLVM_RUNTIME(__negvsi2) DEF_VFP_RUNTIME(__nesf2) DEF_LLVM_RUNTIME(__paritydi2) DEF_LLVM_RUNTIME(__paritysi2) DEF_LLVM_RUNTIME(__popcountdi2) DEF_LLVM_RUNTIME(__popcountsi2) DEF_LLVM_RUNTIME(__powidf2) DEF_LLVM_RUNTIME(__powisf2) DEF_GENERIC_OR_VFP_RUNTIME(__subdf3) DEF_GENERIC_OR_VFP_RUNTIME(__subsf3) DEF_LLVM_RUNTIME(__subvdi3) DEF_LLVM_RUNTIME(__subvsi3) DEF_GENERIC_OR_VFP_RUNTIME(__truncdfsf2) DEF_LLVM_RUNTIME(__ucmpdi2) #if !defined(__i386__) DEF_LLVM_RUNTIME(__udivdi3) #endif DEF_LLVM_RUNTIME(__udivmoddi4) DEF_LLVM_RUNTIME(__udivsi3) #if !defined(__i386__) DEF_LLVM_RUNTIME(__umoddi3) #endif DEF_LLVM_RUNTIME(__umodsi3) DEF_GENERIC_OR_VFP_RUNTIME(__unorddf2) DEF_GENERIC_OR_VFP_RUNTIME(__unordsf2) #undef DEF_GENERIC_RUNTIME #undef DEF_LLVM_RUNTIME #undef DEF_VFP_RUNTIME #undef DEF_BCC_RUNTIME