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 LBooleanNotSmali; 16.super Ljava/lang/Object; 17 18# 19# Elementary test negating a boolean. Verifies that blocks are merged and 20# empty branches removed. 21# 22 23## CHECK-START: boolean BooleanNotSmali.BooleanNot(boolean) select_generator (before) 24## CHECK-DAG: <<Param:z\d+>> ParameterValue 25## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 26## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 27## CHECK-DAG: If [<<Param>>] 28## CHECK-DAG: <<Phi:i\d+>> Phi [<<Const0>>,<<Const1>>] 29## CHECK-DAG: Return [<<Phi>>] 30 31## CHECK-START: boolean BooleanNotSmali.BooleanNot(boolean) select_generator (before) 32## CHECK: Goto 33## CHECK: Goto 34## CHECK: Goto 35## CHECK-NOT: Goto 36 37## CHECK-START: boolean BooleanNotSmali.BooleanNot(boolean) select_generator (after) 38## CHECK-DAG: <<Param:z\d+>> ParameterValue 39## CHECK-DAG: <<Const0:i\d+>> IntConstant 0 40## CHECK-DAG: <<Const1:i\d+>> IntConstant 1 41## CHECK-DAG: <<NotParam:i\d+>> Select [<<Const1>>,<<Const0>>,<<Param>>] 42## CHECK-DAG: Return [<<NotParam>>] 43 44## CHECK-START: boolean BooleanNotSmali.BooleanNot(boolean) select_generator (after) 45## CHECK-NOT: If 46## CHECK-NOT: Phi 47 48## CHECK-START: boolean BooleanNotSmali.BooleanNot(boolean) select_generator (after) 49## CHECK: Goto 50## CHECK-NOT: Goto 51 52.method public static BooleanNot(Z)Z 53 .registers 2 54 55 if-eqz v1, :true_start 56 const/4 v0, 0x0 57 58:return_start 59 return v0 60 61:true_start 62 const/4 v0, 0x1 63 goto :return_start 64 65.end method 66