Home | History | Annotate | Download | only in smali
      1 # Copyright (C) 2015 The Android Open Source Project
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #      http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 
     15 .class public LTestCmp;
     16 
     17 .super Ljava/lang/Object;
     18 
     19 
     20 ## CHECK-START: int TestCmp.$opt$CmpLongConstants() constant_folding (before)
     21 ## CHECK-DAG:     <<Const13:j\d+>>  LongConstant 13
     22 ## CHECK-DAG:     <<Const7:j\d+>>   LongConstant 7
     23 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const13>>,<<Const7>>]
     24 ## CHECK-DAG:                       Return [<<Cmp>>]
     25 
     26 ## CHECK-START: int TestCmp.$opt$CmpLongConstants() constant_folding (after)
     27 ## CHECK-DAG:                       LongConstant 13
     28 ## CHECK-DAG:                       LongConstant 7
     29 ## CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
     30 ## CHECK-DAG:                       Return [<<Const1>>]
     31 
     32 ## CHECK-START: int TestCmp.$opt$CmpLongConstants() constant_folding (after)
     33 ## CHECK-NOT:                       Compare
     34 
     35 .method public static $opt$CmpLongConstants()I
     36    .registers 5
     37    const-wide v1, 13
     38    const-wide v3, 7
     39    cmp-long v0, v1, v3
     40    return v0
     41 .end method
     42 
     43 ## CHECK-START: int TestCmp.$opt$CmpGtFloatConstants() constant_folding (before)
     44 ## CHECK-DAG:     <<Const11:f\d+>>  FloatConstant 11
     45 ## CHECK-DAG:     <<Const22:f\d+>>  FloatConstant 22
     46 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const11>>,<<Const22>>] bias:gt
     47 ## CHECK-DAG:                       Return [<<Cmp>>]
     48 
     49 ## CHECK-START: int TestCmp.$opt$CmpGtFloatConstants() constant_folding (after)
     50 ## CHECK-DAG:                       FloatConstant 11
     51 ## CHECK-DAG:                       FloatConstant 22
     52 ## CHECK-DAG:     <<ConstM1:i\d+>>  IntConstant -1
     53 ## CHECK-DAG:                       Return [<<ConstM1>>]
     54 
     55 ## CHECK-START: int TestCmp.$opt$CmpGtFloatConstants() constant_folding (after)
     56 ## CHECK-NOT:                       Compare
     57 
     58 .method public static $opt$CmpGtFloatConstants()I
     59    .registers 3
     60    const v1, 11.f
     61    const v2, 22.f
     62    cmpg-float v0, v1, v2
     63    return v0
     64 .end method
     65 
     66 ## CHECK-START: int TestCmp.$opt$CmpLtFloatConstants() constant_folding (before)
     67 ## CHECK-DAG:     <<Const33:f\d+>>  FloatConstant 33
     68 ## CHECK-DAG:     <<Const44:f\d+>>  FloatConstant 44
     69 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const33>>,<<Const44>>] bias:lt
     70 ## CHECK-DAG:                       Return [<<Cmp>>]
     71 
     72 ## CHECK-START: int TestCmp.$opt$CmpLtFloatConstants() constant_folding (after)
     73 ## CHECK-DAG:                       FloatConstant 33
     74 ## CHECK-DAG:                       FloatConstant 44
     75 ## CHECK-DAG:     <<ConstM1:i\d+>>  IntConstant -1
     76 ## CHECK-DAG:                       Return [<<ConstM1>>]
     77 
     78 ## CHECK-START: int TestCmp.$opt$CmpLtFloatConstants() constant_folding (after)
     79 ## CHECK-NOT:                       Compare
     80 
     81 .method public static $opt$CmpLtFloatConstants()I
     82    .registers 3
     83    const v1, 33.f
     84    const v2, 44.f
     85    cmpl-float v0, v1, v2
     86    return v0
     87 .end method
     88 
     89 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleConstants() constant_folding (before)
     90 ## CHECK-DAG:     <<Const55:d\d+>>  DoubleConstant 55
     91 ## CHECK-DAG:     <<Const66:d\d+>>  DoubleConstant 66
     92 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const55>>,<<Const66>>] bias:gt
     93 ## CHECK-DAG:                       Return [<<Cmp>>]
     94 
     95 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleConstants() constant_folding (after)
     96 ## CHECK-DAG:                       DoubleConstant 55
     97 ## CHECK-DAG:                       DoubleConstant 66
     98 ## CHECK-DAG:     <<ConstM1:i\d+>>  IntConstant -1
     99 ## CHECK-DAG:                       Return [<<ConstM1>>]
    100 
    101 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleConstants() constant_folding (after)
    102 ## CHECK-NOT:                       Compare
    103 
    104 .method public static $opt$CmpGtDoubleConstants()I
    105    .registers 5
    106    const-wide v1, 55.
    107    const-wide v3, 66.
    108    cmpg-double v0, v1, v3
    109    return v0
    110 .end method
    111 
    112 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleConstants() constant_folding (before)
    113 ## CHECK-DAG:     <<Const77:d\d+>>  DoubleConstant 77
    114 ## CHECK-DAG:     <<Const88:d\d+>>  DoubleConstant 88
    115 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const77>>,<<Const88>>] bias:lt
    116 ## CHECK-DAG:                       Return [<<Cmp>>]
    117 
    118 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleConstants() constant_folding (after)
    119 ## CHECK-DAG:                       DoubleConstant 77
    120 ## CHECK-DAG:                       DoubleConstant 88
    121 ## CHECK-DAG:     <<ConstM1:i\d+>>  IntConstant -1
    122 ## CHECK-DAG:                       Return [<<ConstM1>>]
    123 
    124 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleConstants() constant_folding (after)
    125 ## CHECK-NOT:                       Compare
    126 
    127 .method public static $opt$CmpLtDoubleConstants()I
    128    .registers 5
    129    const-wide v1, 77.
    130    const-wide v3, 88.
    131    cmpl-double v0, v1, v3
    132    return v0
    133 .end method
    134 
    135 
    136 ## CHECK-START: int TestCmp.$opt$CmpLongSameConstant() constant_folding (before)
    137 ## CHECK-DAG:     <<Const100:j\d+>> LongConstant 100
    138 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const100>>,<<Const100>>]
    139 ## CHECK-DAG:                       Return [<<Cmp>>]
    140 
    141 ## CHECK-START: int TestCmp.$opt$CmpLongSameConstant() constant_folding (after)
    142 ## CHECK-DAG:                       LongConstant 100
    143 ## CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
    144 ## CHECK-DAG:                       Return [<<Const0>>]
    145 
    146 ## CHECK-START: int TestCmp.$opt$CmpLongSameConstant() constant_folding (after)
    147 ## CHECK-NOT:                       Compare
    148 
    149 .method public static $opt$CmpLongSameConstant()I
    150    .registers 5
    151    const-wide v1, 100
    152    const-wide v3, 100
    153    cmp-long v0, v1, v3
    154    return v0
    155 .end method
    156 
    157 ## CHECK-START: int TestCmp.$opt$CmpGtFloatSameConstant() constant_folding (before)
    158 ## CHECK-DAG:     <<Const200:f\d+>> FloatConstant 200
    159 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const200>>,<<Const200>>] bias:gt
    160 ## CHECK-DAG:                       Return [<<Cmp>>]
    161 
    162 ## CHECK-START: int TestCmp.$opt$CmpGtFloatSameConstant() constant_folding (after)
    163 ## CHECK-DAG:                       FloatConstant 200
    164 ## CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
    165 ## CHECK-DAG:                       Return [<<Const0>>]
    166 
    167 ## CHECK-START: int TestCmp.$opt$CmpGtFloatSameConstant() constant_folding (after)
    168 ## CHECK-NOT:                       Compare
    169 
    170 .method public static $opt$CmpGtFloatSameConstant()I
    171    .registers 3
    172    const v1, 200.f
    173    const v2, 200.f
    174    cmpg-float v0, v1, v2
    175    return v0
    176 .end method
    177 
    178 ## CHECK-START: int TestCmp.$opt$CmpLtFloatSameConstant() constant_folding (before)
    179 ## CHECK-DAG:     <<Const300:f\d+>> FloatConstant 300
    180 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const300>>,<<Const300>>] bias:lt
    181 ## CHECK-DAG:                       Return [<<Cmp>>]
    182 
    183 ## CHECK-START: int TestCmp.$opt$CmpLtFloatSameConstant() constant_folding (after)
    184 ## CHECK-DAG:                       FloatConstant 300
    185 ## CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
    186 ## CHECK-DAG:                       Return [<<Const0>>]
    187 
    188 ## CHECK-START: int TestCmp.$opt$CmpLtFloatSameConstant() constant_folding (after)
    189 ## CHECK-NOT:                       Compare
    190 
    191 .method public static $opt$CmpLtFloatSameConstant()I
    192    .registers 3
    193    const v1, 300.f
    194    const v2, 300.f
    195    cmpl-float v0, v1, v2
    196    return v0
    197 .end method
    198 
    199 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleSameConstant() constant_folding (before)
    200 ## CHECK-DAG:     <<Const400:d\d+>> DoubleConstant 400
    201 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const400>>,<<Const400>>] bias:gt
    202 ## CHECK-DAG:                       Return [<<Cmp>>]
    203 
    204 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleSameConstant() constant_folding (after)
    205 ## CHECK-DAG:                       DoubleConstant 400
    206 ## CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
    207 ## CHECK-DAG:                       Return [<<Const0>>]
    208 
    209 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleSameConstant() constant_folding (after)
    210 ## CHECK-NOT:                       Compare
    211 
    212 .method public static $opt$CmpGtDoubleSameConstant()I
    213    .registers 5
    214    const-wide v1, 400.
    215    const-wide v3, 400.
    216    cmpg-double v0, v1, v3
    217    return v0
    218 .end method
    219 
    220 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleSameConstant() constant_folding (before)
    221 ## CHECK-DAG:     <<Const500:d\d+>> DoubleConstant 500
    222 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const500>>,<<Const500>>] bias:lt
    223 ## CHECK-DAG:                       Return [<<Cmp>>]
    224 
    225 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleSameConstant() constant_folding (after)
    226 ## CHECK-DAG:                       DoubleConstant 500
    227 ## CHECK-DAG:     <<Const0:i\d+>>   IntConstant 0
    228 ## CHECK-DAG:                       Return [<<Const0>>]
    229 
    230 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleSameConstant() constant_folding (after)
    231 ## CHECK-NOT:                       Compare
    232 
    233 .method public static $opt$CmpLtDoubleSameConstant()I
    234    .registers 5
    235    const-wide v1, 500.
    236    const-wide v3, 500.
    237    cmpl-double v0, v1, v3
    238    return v0
    239 .end method
    240 
    241 
    242 ## CHECK-START: int TestCmp.$opt$CmpGtFloatConstantWithNaN() constant_folding (before)
    243 ## CHECK-DAG:     <<Const44:f\d+>>  FloatConstant 44
    244 ## CHECK-DAG:     <<ConstNan:f\d+>> FloatConstant nan
    245 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const44>>,<<ConstNan>>] bias:gt
    246 ## CHECK-DAG:                       Return [<<Cmp>>]
    247 
    248 ## CHECK-START: int TestCmp.$opt$CmpGtFloatConstantWithNaN() constant_folding (after)
    249 ## CHECK-DAG:                       FloatConstant 44
    250 ## CHECK-DAG:                       FloatConstant nan
    251 ## CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
    252 ## CHECK-DAG:                       Return [<<Const1>>]
    253 
    254 ## CHECK-START: int TestCmp.$opt$CmpGtFloatConstantWithNaN() constant_folding (after)
    255 ## CHECK-NOT:                       Compare
    256 
    257 .method public static $opt$CmpGtFloatConstantWithNaN()I
    258    .registers 3
    259    const v1, 44.f
    260    const v2, NaNf
    261    cmpg-float v0, v1, v2
    262    return v0
    263 .end method
    264 
    265 ## CHECK-START: int TestCmp.$opt$CmpLtFloatConstantWithNaN() constant_folding (before)
    266 ## CHECK-DAG:     <<Const44:f\d+>>  FloatConstant 44
    267 ## CHECK-DAG:     <<ConstNan:f\d+>> FloatConstant nan
    268 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const44>>,<<ConstNan>>] bias:lt
    269 ## CHECK-DAG:                       Return [<<Cmp>>]
    270 
    271 ## CHECK-START: int TestCmp.$opt$CmpLtFloatConstantWithNaN() constant_folding (after)
    272 ## CHECK-DAG:                       FloatConstant 44
    273 ## CHECK-DAG:                       FloatConstant nan
    274 ## CHECK-DAG:     <<ConstM1:i\d+>>  IntConstant -1
    275 ## CHECK-DAG:                       Return [<<ConstM1>>]
    276 
    277 ## CHECK-START: int TestCmp.$opt$CmpLtFloatConstantWithNaN() constant_folding (after)
    278 ## CHECK-NOT:                       Compare
    279 
    280 .method public static $opt$CmpLtFloatConstantWithNaN()I
    281    .registers 3
    282    const v1, 44.f
    283    const v2, NaNf
    284    cmpl-float v0, v1, v2
    285    return v0
    286 .end method
    287 
    288 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleConstantWithNaN() constant_folding (before)
    289 ## CHECK-DAG:     <<Const45:d\d+>>  DoubleConstant 45
    290 ## CHECK-DAG:     <<ConstNan:d\d+>> DoubleConstant nan
    291 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const45>>,<<ConstNan>>] bias:gt
    292 ## CHECK-DAG:                       Return [<<Cmp>>]
    293 
    294 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleConstantWithNaN() constant_folding (after)
    295 ## CHECK-DAG:                       DoubleConstant 45
    296 ## CHECK-DAG:                       DoubleConstant nan
    297 ## CHECK-DAG:     <<Const1:i\d+>>   IntConstant 1
    298 ## CHECK-DAG:                       Return [<<Const1>>]
    299 
    300 ## CHECK-START: int TestCmp.$opt$CmpGtDoubleConstantWithNaN() constant_folding (after)
    301 ## CHECK-NOT:                       Compare
    302 
    303 .method public static $opt$CmpGtDoubleConstantWithNaN()I
    304    .registers 5
    305    const-wide v1, 45.
    306    const-wide v3, NaN
    307    cmpg-double v0, v1, v3
    308    return v0
    309 .end method
    310 
    311 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleConstantWithNaN() constant_folding (before)
    312 ## CHECK-DAG:     <<Const46:d\d+>>  DoubleConstant 46
    313 ## CHECK-DAG:     <<ConstNan:d\d+>> DoubleConstant nan
    314 ## CHECK-DAG:     <<Cmp:i\d+>>      Compare [<<Const46>>,<<ConstNan>>] bias:lt
    315 ## CHECK-DAG:                       Return [<<Cmp>>]
    316 
    317 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleConstantWithNaN() constant_folding (after)
    318 ## CHECK-DAG:                       DoubleConstant 46
    319 ## CHECK-DAG:                       DoubleConstant nan
    320 ## CHECK-DAG:     <<ConstM1:i\d+>>  IntConstant -1
    321 ## CHECK-DAG:                       Return [<<ConstM1>>]
    322 
    323 ## CHECK-START: int TestCmp.$opt$CmpLtDoubleConstantWithNaN() constant_folding (after)
    324 ## CHECK-NOT:                       Compare
    325 
    326 .method public static $opt$CmpLtDoubleConstantWithNaN()I
    327    .registers 5
    328    const-wide v1, 46.
    329    const-wide v3, NaN
    330    cmpl-double v0, v1, v3
    331    return v0
    332 .end method
    333