1# Copyright (C) 2016 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 LSmaliTests;
16.super Ljava/lang/Object;
17
18## CHECK-START: void SmaliTests.testInstanceOf_EQ0_NotInlined(java.lang.Object) builder (after)
19## CHECK-DAG:     <<Cst0:i\d+>> IntConstant 0
20## CHECK-DAG:     <<IOf:z\d+>>  InstanceOf
21## CHECK-DAG:                   Equal [<<IOf>>,<<Cst0>>]
22
23## CHECK-START: void SmaliTests.testInstanceOf_EQ0_NotInlined(java.lang.Object) instruction_simplifier (before)
24## CHECK:         CheckCast
25
26## CHECK-START: void SmaliTests.testInstanceOf_EQ0_NotInlined(java.lang.Object) instruction_simplifier (after)
27## CHECK-NOT:     CheckCast
28
29.method public static testInstanceOf_EQ0_NotInlined(Ljava/lang/Object;)V
30  .registers 3
31
32  const v0, 0x0
33  instance-of v1, p0, LSubclassC;
34  if-eq v1, v0, :return
35
36  check-cast p0, LSubclassC;
37  invoke-virtual {p0}, LSubclassC;->$noinline$g()V
38
39  :return
40  return-void
41
42.end method
43
44## CHECK-START: void SmaliTests.testInstanceOf_EQ1_NotInlined(java.lang.Object) builder (after)
45## CHECK-DAG:     <<Cst1:i\d+>> IntConstant 1
46## CHECK-DAG:     <<IOf:z\d+>>  InstanceOf
47## CHECK-DAG:                   Equal [<<IOf>>,<<Cst1>>]
48
49## CHECK-START: void SmaliTests.testInstanceOf_EQ1_NotInlined(java.lang.Object) instruction_simplifier (before)
50## CHECK:         CheckCast
51
52## CHECK-START: void SmaliTests.testInstanceOf_EQ1_NotInlined(java.lang.Object) instruction_simplifier (after)
53## CHECK-NOT:     CheckCast
54
55.method public static testInstanceOf_EQ1_NotInlined(Ljava/lang/Object;)V
56  .registers 3
57
58  const v0, 0x1
59  instance-of v1, p0, LSubclassC;
60  if-eq v1, v0, :invoke
61  return-void
62
63  :invoke
64  check-cast p0, LSubclassC;
65  invoke-virtual {p0}, LSubclassC;->$noinline$g()V
66  return-void
67
68.end method
69
70## CHECK-START: void SmaliTests.testInstanceOf_NE0_NotInlined(java.lang.Object) builder (after)
71## CHECK-DAG:     <<Cst0:i\d+>> IntConstant 0
72## CHECK-DAG:     <<IOf:z\d+>>  InstanceOf
73## CHECK-DAG:                   NotEqual [<<IOf>>,<<Cst0>>]
74
75## CHECK-START: void SmaliTests.testInstanceOf_NE0_NotInlined(java.lang.Object) instruction_simplifier (before)
76## CHECK:         CheckCast
77
78## CHECK-START: void SmaliTests.testInstanceOf_NE0_NotInlined(java.lang.Object) instruction_simplifier (after)
79## CHECK-NOT:     CheckCast
80
81.method public static testInstanceOf_NE0_NotInlined(Ljava/lang/Object;)V
82  .registers 3
83
84  const v0, 0x0
85  instance-of v1, p0, LSubclassC;
86  if-ne v1, v0, :invoke
87  return-void
88
89  :invoke
90  check-cast p0, LSubclassC;
91  invoke-virtual {p0}, LSubclassC;->$noinline$g()V
92  return-void
93
94.end method
95
96## CHECK-START: void SmaliTests.testInstanceOf_NE1_NotInlined(java.lang.Object) builder (after)
97## CHECK-DAG:     <<Cst1:i\d+>> IntConstant 1
98## CHECK-DAG:     <<IOf:z\d+>>  InstanceOf
99## CHECK-DAG:                   NotEqual [<<IOf>>,<<Cst1>>]
100
101## CHECK-START: void SmaliTests.testInstanceOf_NE1_NotInlined(java.lang.Object) instruction_simplifier (before)
102## CHECK:         CheckCast
103
104## CHECK-START: void SmaliTests.testInstanceOf_NE1_NotInlined(java.lang.Object) instruction_simplifier (after)
105## CHECK-NOT:     CheckCast
106
107.method public static testInstanceOf_NE1_NotInlined(Ljava/lang/Object;)V
108  .registers 3
109
110  const v0, 0x1
111  instance-of v1, p0, LSubclassC;
112  if-ne v1, v0, :return
113
114  check-cast p0, LSubclassC;
115  invoke-virtual {p0}, LSubclassC;->$noinline$g()V
116
117  :return
118  return-void
119
120.end method
121