1*795d594fSAndroid Build Coastguard Worker# Copyright (C) 2018 The Android Open Source Project 2*795d594fSAndroid Build Coastguard Worker# 3*795d594fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*795d594fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*795d594fSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*795d594fSAndroid Build Coastguard Worker# 7*795d594fSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*795d594fSAndroid Build Coastguard Worker# 9*795d594fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*795d594fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*795d594fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*795d594fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*795d594fSAndroid Build Coastguard Worker# limitations under the License. 14*795d594fSAndroid Build Coastguard Worker 15*795d594fSAndroid Build Coastguard Worker.class public LSmaliTests2; 16*795d594fSAndroid Build Coastguard Worker.super Ljava/lang/Object; 17*795d594fSAndroid Build Coastguard Worker 18*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$XorAllOnes(int) instruction_simplifier (before) 19*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:i\d+>> ParameterValue 20*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<ConstF:i\d+>> IntConstant -1 21*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Xor:i\d+>> Xor [<<Arg>>,<<ConstF>>] 22*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Xor>>] 23*795d594fSAndroid Build Coastguard Worker 24*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$XorAllOnes(int) instruction_simplifier (after) 25*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:i\d+>> ParameterValue 26*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Not:i\d+>> Not [<<Arg>>] 27*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Not>>] 28*795d594fSAndroid Build Coastguard Worker 29*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$XorAllOnes(int) instruction_simplifier (after) 30*795d594fSAndroid Build Coastguard Worker## CHECK-NOT: Xor 31*795d594fSAndroid Build Coastguard Worker 32*795d594fSAndroid Build Coastguard Worker# Original java source: 33*795d594fSAndroid Build Coastguard Worker# 34*795d594fSAndroid Build Coastguard Worker# return arg ^ -1; 35*795d594fSAndroid Build Coastguard Worker# 36*795d594fSAndroid Build Coastguard Worker.method public static $noinline$XorAllOnes(I)I 37*795d594fSAndroid Build Coastguard Worker .registers 2 38*795d594fSAndroid Build Coastguard Worker .param p0, "arg" # I 39*795d594fSAndroid Build Coastguard Worker 40*795d594fSAndroid Build Coastguard Worker .prologue 41*795d594fSAndroid Build Coastguard Worker .line 658 42*795d594fSAndroid Build Coastguard Worker xor-int/lit8 v0, p0, -0x1 43*795d594fSAndroid Build Coastguard Worker 44*795d594fSAndroid Build Coastguard Worker return v0 45*795d594fSAndroid Build Coastguard Worker.end method 46*795d594fSAndroid Build Coastguard Worker 47*795d594fSAndroid Build Coastguard Worker# Test simplification of the `~~var` pattern. 48*795d594fSAndroid Build Coastguard Worker# The transformation tested is implemented in `InstructionSimplifierVisitor::VisitNot`. 49*795d594fSAndroid Build Coastguard Worker 50*795d594fSAndroid Build Coastguard Worker## CHECK-START: long SmaliTests2.$noinline$NotNot1(long) instruction_simplifier (before) 51*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:j\d+>> ParameterValue 52*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<ConstNeg1:j\d+>> LongConstant -1 53*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Not1:j\d+>> Xor [<<Arg>>,<<ConstNeg1>>] 54*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Not2:j\d+>> Xor [<<Not1>>,<<ConstNeg1>>] 55*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Not2>>] 56*795d594fSAndroid Build Coastguard Worker 57*795d594fSAndroid Build Coastguard Worker## CHECK-START: long SmaliTests2.$noinline$NotNot1(long) instruction_simplifier (after) 58*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:j\d+>> ParameterValue 59*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Arg>>] 60*795d594fSAndroid Build Coastguard Worker 61*795d594fSAndroid Build Coastguard Worker## CHECK-START: long SmaliTests2.$noinline$NotNot1(long) instruction_simplifier (after) 62*795d594fSAndroid Build Coastguard Worker## CHECK-NOT: Xor 63*795d594fSAndroid Build Coastguard Worker 64*795d594fSAndroid Build Coastguard Worker# Original java source: 65*795d594fSAndroid Build Coastguard Worker# 66*795d594fSAndroid Build Coastguard Worker# return ~~arg; 67*795d594fSAndroid Build Coastguard Worker.method public static $noinline$NotNot1(J)J 68*795d594fSAndroid Build Coastguard Worker .registers 6 69*795d594fSAndroid Build Coastguard Worker .param p0, "arg" # J 70*795d594fSAndroid Build Coastguard Worker 71*795d594fSAndroid Build Coastguard Worker .prologue 72*795d594fSAndroid Build Coastguard Worker const-wide/16 v2, -0x1 73*795d594fSAndroid Build Coastguard Worker 74*795d594fSAndroid Build Coastguard Worker .line 1001 75*795d594fSAndroid Build Coastguard Worker xor-long v0, p0, v2 76*795d594fSAndroid Build Coastguard Worker 77*795d594fSAndroid Build Coastguard Worker xor-long/2addr v0, v2 78*795d594fSAndroid Build Coastguard Worker 79*795d594fSAndroid Build Coastguard Worker return-wide v0 80*795d594fSAndroid Build Coastguard Worker.end method 81*795d594fSAndroid Build Coastguard Worker 82*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (before) 83*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:i\d+>> ParameterValue 84*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<ConstNeg1:i\d+>> IntConstant -1 85*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Not1:i\d+>> Xor [<<Arg>>,<<ConstNeg1>>] 86*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Not2:i\d+>> Xor [<<Not1>>,<<ConstNeg1>>] 87*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Add:i\d+>> Add [<<Not2>>,<<Not1>>] 88*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Add>>] 89*795d594fSAndroid Build Coastguard Worker 90*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (after) 91*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:i\d+>> ParameterValue 92*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Not:i\d+>> Not [<<Arg>>] 93*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Add:i\d+>> Add [<<Arg>>,<<Not>>] 94*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Add>>] 95*795d594fSAndroid Build Coastguard Worker 96*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (after) 97*795d594fSAndroid Build Coastguard Worker## CHECK: Not 98*795d594fSAndroid Build Coastguard Worker## CHECK-NOT: Not 99*795d594fSAndroid Build Coastguard Worker 100*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$NotNot2(int) instruction_simplifier (after) 101*795d594fSAndroid Build Coastguard Worker## CHECK-NOT: Xor 102*795d594fSAndroid Build Coastguard Worker 103*795d594fSAndroid Build Coastguard Worker# Original java source: 104*795d594fSAndroid Build Coastguard Worker# 105*795d594fSAndroid Build Coastguard Worker# int temp = ~arg; 106*795d594fSAndroid Build Coastguard Worker# return temp + ~temp; 107*795d594fSAndroid Build Coastguard Worker# 108*795d594fSAndroid Build Coastguard Worker.method public static $noinline$NotNot2(I)I 109*795d594fSAndroid Build Coastguard Worker .registers 3 110*795d594fSAndroid Build Coastguard Worker .param p0, "arg" # I 111*795d594fSAndroid Build Coastguard Worker 112*795d594fSAndroid Build Coastguard Worker .prologue 113*795d594fSAndroid Build Coastguard Worker .line 1026 114*795d594fSAndroid Build Coastguard Worker xor-int/lit8 v0, p0, -0x1 115*795d594fSAndroid Build Coastguard Worker 116*795d594fSAndroid Build Coastguard Worker .line 1027 117*795d594fSAndroid Build Coastguard Worker .local v0, "temp":I 118*795d594fSAndroid Build Coastguard Worker xor-int/lit8 v1, v0, -0x1 119*795d594fSAndroid Build Coastguard Worker 120*795d594fSAndroid Build Coastguard Worker add-int/2addr v1, v0 121*795d594fSAndroid Build Coastguard Worker 122*795d594fSAndroid Build Coastguard Worker return v1 123*795d594fSAndroid Build Coastguard Worker.end method 124*795d594fSAndroid Build Coastguard Worker 125*795d594fSAndroid Build Coastguard Worker# Original java source: 126*795d594fSAndroid Build Coastguard Worker# 127*795d594fSAndroid Build Coastguard Worker# return !arg; 128*795d594fSAndroid Build Coastguard Worker# 129*795d594fSAndroid Build Coastguard Worker.method public static NegateValue(Z)Z 130*795d594fSAndroid Build Coastguard Worker .registers 2 131*795d594fSAndroid Build Coastguard Worker .param p0, "arg" # Z 132*795d594fSAndroid Build Coastguard Worker 133*795d594fSAndroid Build Coastguard Worker .prologue 134*795d594fSAndroid Build Coastguard Worker .line 1216 135*795d594fSAndroid Build Coastguard Worker if-nez p0, :cond_4 136*795d594fSAndroid Build Coastguard Worker 137*795d594fSAndroid Build Coastguard Worker const/4 v0, 0x1 138*795d594fSAndroid Build Coastguard Worker 139*795d594fSAndroid Build Coastguard Worker :goto_3 140*795d594fSAndroid Build Coastguard Worker return v0 141*795d594fSAndroid Build Coastguard Worker 142*795d594fSAndroid Build Coastguard Worker :cond_4 143*795d594fSAndroid Build Coastguard Worker const/4 v0, 0x0 144*795d594fSAndroid Build Coastguard Worker 145*795d594fSAndroid Build Coastguard Worker goto :goto_3 146*795d594fSAndroid Build Coastguard Worker.end method 147*795d594fSAndroid Build Coastguard Worker 148*795d594fSAndroid Build Coastguard Worker# Test simplification of double Boolean negation. Note that sometimes 149*795d594fSAndroid Build Coastguard Worker# both negations can be removed but we only expect the simplifier to 150*795d594fSAndroid Build Coastguard Worker# remove the second. 151*795d594fSAndroid Build Coastguard Worker 152*795d594fSAndroid Build Coastguard Worker## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier (before) 153*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:z\d+>> ParameterValue 154*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const1:i\d+>> IntConstant 0 155*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Result:z\d+>> InvokeStaticOrDirect method_name:SmaliTests2.NegateValue 156*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<NotResult:z\d+>> NotEqual [<<Result>>,<<Const1>>] 157*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: If [<<NotResult>>] 158*795d594fSAndroid Build Coastguard Worker 159*795d594fSAndroid Build Coastguard Worker## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier (after) 160*795d594fSAndroid Build Coastguard Worker## CHECK-NOT: NotEqual 161*795d594fSAndroid Build Coastguard Worker 162*795d594fSAndroid Build Coastguard Worker## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier (after) 163*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:z\d+>> ParameterValue 164*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Result:z\d+>> InvokeStaticOrDirect method_name:SmaliTests2.NegateValue 165*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 166*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 167*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>] 168*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Phi>>] 169*795d594fSAndroid Build Coastguard Worker 170*795d594fSAndroid Build Coastguard Worker## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier$after_inlining (before) 171*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:z\d+>> ParameterValue 172*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 173*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 174*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: If [<<Arg>>] 175*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>] 176*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Phi>>] 177*795d594fSAndroid Build Coastguard Worker 178*795d594fSAndroid Build Coastguard Worker## CHECK-START: boolean SmaliTests2.$noinline$NotNotBool(boolean) instruction_simplifier$after_gvn (after) 179*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:z\d+>> ParameterValue 180*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Arg>>] 181*795d594fSAndroid Build Coastguard Worker 182*795d594fSAndroid Build Coastguard Worker# Original java source: 183*795d594fSAndroid Build Coastguard Worker# 184*795d594fSAndroid Build Coastguard Worker# return !(NegateValue(arg)); 185*795d594fSAndroid Build Coastguard Worker# 186*795d594fSAndroid Build Coastguard Worker.method public static $noinline$NotNotBool(Z)Z 187*795d594fSAndroid Build Coastguard Worker .registers 2 188*795d594fSAndroid Build Coastguard Worker .param p0, "arg" # Z 189*795d594fSAndroid Build Coastguard Worker 190*795d594fSAndroid Build Coastguard Worker .prologue 191*795d594fSAndroid Build Coastguard Worker .line 1220 192*795d594fSAndroid Build Coastguard Worker invoke-static {p0}, LSmaliTests2;->NegateValue(Z)Z 193*795d594fSAndroid Build Coastguard Worker 194*795d594fSAndroid Build Coastguard Worker move-result v0 195*795d594fSAndroid Build Coastguard Worker 196*795d594fSAndroid Build Coastguard Worker if-nez v0, :cond_8 197*795d594fSAndroid Build Coastguard Worker 198*795d594fSAndroid Build Coastguard Worker const/4 v0, 0x1 199*795d594fSAndroid Build Coastguard Worker 200*795d594fSAndroid Build Coastguard Worker :goto_7 201*795d594fSAndroid Build Coastguard Worker return v0 202*795d594fSAndroid Build Coastguard Worker 203*795d594fSAndroid Build Coastguard Worker :cond_8 204*795d594fSAndroid Build Coastguard Worker const/4 v0, 0x0 205*795d594fSAndroid Build Coastguard Worker 206*795d594fSAndroid Build Coastguard Worker goto :goto_7 207*795d594fSAndroid Build Coastguard Worker.end method 208*795d594fSAndroid Build Coastguard Worker 209*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$bug68142795Short(short) instruction_simplifier (before) 210*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:s\d+>> ParameterValue 211*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const:i\d+>> IntConstant 65535 212*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<And1:i\d+>> And [<<Arg>>,<<Const>>] 213*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<And2:i\d+>> And [<<And1>>,<<Const>>] 214*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Conv:s\d+>> TypeConversion [<<And2>>] 215*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Conv>>] 216*795d594fSAndroid Build Coastguard Worker 217*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$bug68142795Short(short) instruction_simplifier (after) 218*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:s\d+>> ParameterValue 219*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Arg>>] 220*795d594fSAndroid Build Coastguard Worker 221*795d594fSAndroid Build Coastguard Worker# Original java source 222*795d594fSAndroid Build Coastguard Worker# 223*795d594fSAndroid Build Coastguard Worker# return (short)(0xffff & (s & 0xffff)); 224*795d594fSAndroid Build Coastguard Worker# 225*795d594fSAndroid Build Coastguard Worker.method public static $noinline$bug68142795Short(S)I 226*795d594fSAndroid Build Coastguard Worker .registers 3 227*795d594fSAndroid Build Coastguard Worker .param p0, "s" # S 228*795d594fSAndroid Build Coastguard Worker 229*795d594fSAndroid Build Coastguard Worker .prologue 230*795d594fSAndroid Build Coastguard Worker const v1, 0xffff 231*795d594fSAndroid Build Coastguard Worker 232*795d594fSAndroid Build Coastguard Worker .line 2562 233*795d594fSAndroid Build Coastguard Worker and-int v0, p0, v1 234*795d594fSAndroid Build Coastguard Worker 235*795d594fSAndroid Build Coastguard Worker and-int/2addr v0, v1 236*795d594fSAndroid Build Coastguard Worker 237*795d594fSAndroid Build Coastguard Worker int-to-short v0, v0 238*795d594fSAndroid Build Coastguard Worker 239*795d594fSAndroid Build Coastguard Worker return v0 240*795d594fSAndroid Build Coastguard Worker.end method 241*795d594fSAndroid Build Coastguard Worker 242*795d594fSAndroid Build Coastguard Worker# Original java source 243*795d594fSAndroid Build Coastguard Worker# 244*795d594fSAndroid Build Coastguard Worker# return 255; 245*795d594fSAndroid Build Coastguard Worker# 246*795d594fSAndroid Build Coastguard Worker.method private static $inline$get255()I 247*795d594fSAndroid Build Coastguard Worker .registers 1 248*795d594fSAndroid Build Coastguard Worker 249*795d594fSAndroid Build Coastguard Worker .prologue 250*795d594fSAndroid Build Coastguard Worker .line 2849 251*795d594fSAndroid Build Coastguard Worker const/16 v0, 0xff 252*795d594fSAndroid Build Coastguard Worker 253*795d594fSAndroid Build Coastguard Worker return v0 254*795d594fSAndroid Build Coastguard Worker.end method 255*795d594fSAndroid Build Coastguard Worker 256*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$bug68142795Boolean(boolean) instruction_simplifier$after_inlining (before) 257*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:z\d+>> ParameterValue 258*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 259*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 260*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Const255:i\d+>> IntConstant 255 261*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: If [<<Arg>>] 262*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const1>>,<<Const0>>] 263*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<And:i\d+>> And [<<Const255>>,<<Phi>>] 264*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Conv:b\d+>> TypeConversion [<<And>>] 265*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Conv>>] 266*795d594fSAndroid Build Coastguard Worker 267*795d594fSAndroid Build Coastguard Worker## CHECK-START: int SmaliTests2.$noinline$bug68142795Boolean(boolean) instruction_simplifier$after_gvn (after) 268*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: <<Arg:z\d+>> ParameterValue 269*795d594fSAndroid Build Coastguard Worker## CHECK-DAG: Return [<<Arg>>] 270*795d594fSAndroid Build Coastguard Worker 271*795d594fSAndroid Build Coastguard Worker# Original java source 272*795d594fSAndroid Build Coastguard Worker# 273*795d594fSAndroid Build Coastguard Worker# int v = b ? 1 : 0; // Should be simplified to "b" after inlining. 274*795d594fSAndroid Build Coastguard Worker# return (byte)($inline$get255() & v); 275*795d594fSAndroid Build Coastguard Worker# 276*795d594fSAndroid Build Coastguard Worker.method public static $noinline$bug68142795Boolean(Z)I 277*795d594fSAndroid Build Coastguard Worker .registers 3 278*795d594fSAndroid Build Coastguard Worker .param p0, "b" # Z 279*795d594fSAndroid Build Coastguard Worker 280*795d594fSAndroid Build Coastguard Worker .prologue 281*795d594fSAndroid Build Coastguard Worker .line 2580 282*795d594fSAndroid Build Coastguard Worker if-eqz p0, :cond_a 283*795d594fSAndroid Build Coastguard Worker 284*795d594fSAndroid Build Coastguard Worker const/4 v0, 0x1 285*795d594fSAndroid Build Coastguard Worker 286*795d594fSAndroid Build Coastguard Worker .line 2581 287*795d594fSAndroid Build Coastguard Worker .local v0, "v":I 288*795d594fSAndroid Build Coastguard Worker :goto_3 289*795d594fSAndroid Build Coastguard Worker invoke-static {}, LSmaliTests2;->$inline$get255()I 290*795d594fSAndroid Build Coastguard Worker 291*795d594fSAndroid Build Coastguard Worker move-result v1 292*795d594fSAndroid Build Coastguard Worker 293*795d594fSAndroid Build Coastguard Worker and-int/2addr v1, v0 294*795d594fSAndroid Build Coastguard Worker 295*795d594fSAndroid Build Coastguard Worker int-to-byte v1, v1 296*795d594fSAndroid Build Coastguard Worker 297*795d594fSAndroid Build Coastguard Worker return v1 298*795d594fSAndroid Build Coastguard Worker 299*795d594fSAndroid Build Coastguard Worker .line 2580 300*795d594fSAndroid Build Coastguard Worker .end local v0 # "v":I 301*795d594fSAndroid Build Coastguard Worker :cond_a 302*795d594fSAndroid Build Coastguard Worker const/4 v0, 0x0 303*795d594fSAndroid Build Coastguard Worker 304*795d594fSAndroid Build Coastguard Worker goto :goto_3 305*795d594fSAndroid Build Coastguard Worker.end method 306