xref: /aosp_15_r20/art/test/458-checker-instruct-simplification/smali/SmaliTests2.smali (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
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