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