Home | History | Annotate | Download | only in ExecutionEngine
      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