1ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil/* 26a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * Copyright (C) 2014 The Android Open Source Project 36a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * 46a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * Licensed under the Apache License, Version 2.0 (the "License"); 56a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * you may not use this file except in compliance with the License. 66a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * You may obtain a copy of the License at 76a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * 86a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * http://www.apache.org/licenses/LICENSE-2.0 96a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * 106a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * Unless required by applicable law or agreed to in writing, software 116a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * distributed under the License is distributed on an "AS IS" BASIS, 126a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * See the License for the specific language governing permissions and 146a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain * limitations under the License. 156a92a033c33e383541d77607fbe8cd982875d13dRoland Levillain */ 16ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 1731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillainimport java.lang.reflect.Method; 1831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 194846d13744f07e82571d2882acc823d811ec942dDavid Brazdilpublic class Main { 20ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 2131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain // Workaround for b/18051191. 2231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain class InnerClass {} 2331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 243b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain public static void assertFalse(boolean condition) { 253b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain if (condition) { 263b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain throw new Error(); 273b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain } 283b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain } 293b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 30b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static void assertIntEquals(int expected, int result) { 31b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames if (expected != result) { 32b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames throw new Error("Expected: " + expected + ", found: " + result); 33b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 34b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 35b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 36b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static void assertLongEquals(long expected, long result) { 37b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames if (expected != result) { 38b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames throw new Error("Expected: " + expected + ", found: " + result); 39b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 40b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 41b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 42e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static void assertFloatEquals(float expected, float result) { 43e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell if (expected != result) { 44e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell throw new Error("Expected: " + expected + ", found: " + result); 45e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 46e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 47e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 48e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static void assertDoubleEquals(double expected, double result) { 49e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell if (expected != result) { 50e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell throw new Error("Expected: " + expected + ", found: " + result); 51e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 52e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 53e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 54b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 5531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain // Wrappers around methods located in file TestCmp.smali. 5631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 5731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLongConstants() throws Exception { 5831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLongConstants"); 5931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 6031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 6131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpGtFloatConstants() throws Exception { 6231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpGtFloatConstants"); 6331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 6431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 6531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLtFloatConstants() throws Exception { 6631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLtFloatConstants"); 6731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 6831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 6931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpGtDoubleConstants() throws Exception { 7031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpGtDoubleConstants"); 7131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 7231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 7331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLtDoubleConstants() throws Exception { 7431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLtDoubleConstants"); 7531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 7631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 7731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 7831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLongSameConstant() throws Exception { 7931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLongSameConstant"); 8031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 8131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 8231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpGtFloatSameConstant() throws Exception { 8331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpGtFloatSameConstant"); 8431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 8531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 8631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLtFloatSameConstant() throws Exception { 8731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLtFloatSameConstant"); 8831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 8931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 9031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpGtDoubleSameConstant() throws Exception { 9131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpGtDoubleSameConstant"); 9231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 9331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 9431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLtDoubleSameConstant() throws Exception { 9531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLtDoubleSameConstant"); 9631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 9731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 9831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 9931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpGtFloatConstantWithNaN() throws Exception { 10031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpGtFloatConstantWithNaN"); 10131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 10231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 10331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLtFloatConstantWithNaN() throws Exception { 10431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLtFloatConstantWithNaN"); 10531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 10631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 10731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpGtDoubleConstantWithNaN() throws Exception { 10831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpGtDoubleConstantWithNaN"); 10931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 11031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 11131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public int smaliCmpLtDoubleConstantWithNaN() throws Exception { 11231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Method m = testCmp.getMethod("$opt$CmpLtDoubleConstantWithNaN"); 11331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return (Integer)m.invoke(null); 11431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 11531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 116138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung public static int smaliIntAddition2() throws Exception { 117138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung Method m = Class.forName("TestCmp").getMethod("IntAddition2"); 118138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung return (Integer)m.invoke(null); 119138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung } 120138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung public static int smaliIntAddition2AddAndMove() throws Exception { 121138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung Method m = Class.forName("TestCmp").getMethod("IntAddition2AddAndMove"); 122138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung return (Integer)m.invoke(null); 123138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung } 124138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung public static int smaliJumpsAndConditionals(boolean cond) throws Exception { 125138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung Method m = Class.forName("TestCmp").getMethod("JumpsAndConditionals", boolean.class); 126138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung return (Integer)m.invoke(null, cond); 127138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung } 128138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung 12931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 130ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 131b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * Exercise constant folding on negation. 132ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 133ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 134a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.IntNegation() constant_folding (before) 135a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const42:i\d+>> IntConstant 42 136a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Neg:i\d+>> Neg [<<Const42>>] 137a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Neg>>] 138ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 139a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.IntNegation() constant_folding (after) 140a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstN42:i\d+>> IntConstant -42 141a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<ConstN42>>] 142ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 143b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.IntNegation() constant_folding (after) 144b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Neg 145b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 146ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntNegation() { 147ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int x, y; 148ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil x = 42; 149ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil y = -x; 150ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return y; 151ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 152ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 153c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-START: long Main.LongNegation() constant_folding (before) 154c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-DAG: <<Const42:j\d+>> LongConstant 42 155c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-DAG: <<Neg:j\d+>> Neg [<<Const42>>] 156c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-DAG: Return [<<Neg>>] 157c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain 158c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-START: long Main.LongNegation() constant_folding (after) 159c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-DAG: <<ConstN42:j\d+>> LongConstant -42 160c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-DAG: Return [<<ConstN42>>] 161c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain 162c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-START: long Main.LongNegation() constant_folding (after) 163c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain /// CHECK-NOT: Neg 164c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain 165c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain public static long LongNegation() { 166c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain long x, y; 167c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain x = 42L; 168c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain y = -x; 169c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain return y; 170c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain } 171c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain 17231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-START: float Main.FloatNegation() constant_folding (before) 17331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const42:f\d+>> FloatConstant 42 17431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Neg:f\d+>> Neg [<<Const42>>] 17531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Neg>>] 17631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 17731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-START: float Main.FloatNegation() constant_folding (after) 17831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<ConstN42:f\d+>> FloatConstant -42 17931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<ConstN42>>] 18031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 18131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-START: float Main.FloatNegation() constant_folding (after) 18231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Neg 18331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 18431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static float FloatNegation() { 18531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain float x, y; 18631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain x = 42F; 18731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain y = -x; 18831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return y; 18931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 19031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 19131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-START: double Main.DoubleNegation() constant_folding (before) 19231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const42:d\d+>> DoubleConstant 42 19331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Neg:d\d+>> Neg [<<Const42>>] 19431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Neg>>] 19531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 19631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-START: double Main.DoubleNegation() constant_folding (after) 19731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<ConstN42:d\d+>> DoubleConstant -42 19831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<ConstN42>>] 19931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 20031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-START: double Main.DoubleNegation() constant_folding (after) 20131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Neg 20231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 20331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static double DoubleNegation() { 20431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain double x, y; 20531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain x = 42D; 20631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain y = -x; 20731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return y; 20831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 20931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 210bd44132f680430d44790015b42edffc05797e19cIgor Murashkin 211ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 212b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * Exercise constant folding on addition. 213ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 214ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 215bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntAddition1() constant_folding (before) 216a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 217a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 218a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Add:i\d+>> Add [<<Const1>>,<<Const2>>] 219a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Add>>] 220ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 221bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntAddition1() constant_folding (after) 222a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 223a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const3>>] 224ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 225bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntAddition1() constant_folding (after) 226b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Add 227b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 228ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntAddition1() { 229ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 230bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 1; 231bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2; 232ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 233ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 234ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 235ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 236bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntAddition2() constant_folding (before) 237a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 238a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 239a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const5:i\d+>> IntConstant 5 240a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const6:i\d+>> IntConstant 6 241a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Add1:i\d+>> Add [<<Const1>>,<<Const2>>] 242bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-DAG: Add [<<Const5>>,<<Const6>>] 243ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 244bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntAddition2() constant_folding (after) 245a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const14:i\d+>> IntConstant 14 246a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const14>>] 247ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 248bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntAddition2() constant_folding (after) 249b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Add 250b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 251ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntAddition2() { 252ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 253bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 1; 254bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2; 255ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a += b; 256bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 5; 257bd44132f680430d44790015b42edffc05797e19cIgor Murashkin c = 6; 258ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b += c; 259ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 260ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 261ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 262ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 263bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongAddition() constant_folding (before) 264a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:j\d+>> LongConstant 1 265a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 266a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Add:j\d+>> Add [<<Const1>>,<<Const2>>] 267a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Add>>] 268ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 269bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongAddition() constant_folding (after) 270a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 271a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const3>>] 272ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 273bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongAddition() constant_folding (after) 274b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Add 275b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 276ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static long LongAddition() { 277ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil long a, b, c; 278bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 1L; 279bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2L; 280ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 281ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 282ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 283ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 284bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatAddition() constant_folding (before) 28531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const1:f\d+>> FloatConstant 1 28631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2:f\d+>> FloatConstant 2 28731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Add:f\d+>> Add [<<Const1>>,<<Const2>>] 28831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Add>>] 28931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 290bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatAddition() constant_folding (after) 29131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const3:f\d+>> FloatConstant 3 29231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const3>>] 29331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 294bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatAddition() constant_folding (after) 29531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Add 29631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 29731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static float FloatAddition() { 29831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain float a, b, c; 299bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 1F; 300bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2F; 30131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a + b; 30231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 30331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 30431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 305bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleAddition() constant_folding (before) 30631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const1:d\d+>> DoubleConstant 1 30731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2:d\d+>> DoubleConstant 2 30831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Add:d\d+>> Add [<<Const1>>,<<Const2>>] 30931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Add>>] 31031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 311bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleAddition() constant_folding (after) 31231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const3:d\d+>> DoubleConstant 3 31331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const3>>] 31431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 315bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleAddition() constant_folding (after) 31631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Add 31731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 31831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static double DoubleAddition() { 31931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain double a, b, c; 320bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 1D; 321bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2D; 32231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a + b; 32331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 32431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 32531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 326b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 327ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 328b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * Exercise constant folding on subtraction. 329ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 330ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 331bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntSubtraction() constant_folding (before) 332b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-DAG: <<Const6:i\d+>> IntConstant 6 333b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 334b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-DAG: <<Sub:i\d+>> Sub [<<Const6>>,<<Const2>>] 335b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-DAG: Return [<<Sub>>] 336b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 337bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntSubtraction() constant_folding (after) 338b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-DAG: <<Const4:i\d+>> IntConstant 4 339b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-DAG: Return [<<Const4>>] 340b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 341bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntSubtraction() constant_folding (after) 342b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Sub 343b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 344b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain public static int IntSubtraction() { 345b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain int a, b, c; 346bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 6; 347bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2; 348b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain c = a - b; 349b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain return c; 350b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain } 351b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 352bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongSubtraction() constant_folding (before) 353a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const6:j\d+>> LongConstant 6 354a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 355a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Sub:j\d+>> Sub [<<Const6>>,<<Const2>>] 356a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Sub>>] 357ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 358bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongSubtraction() constant_folding (after) 359a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const4:j\d+>> LongConstant 4 360a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const4>>] 361ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 362bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongSubtraction() constant_folding (after) 363b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Sub 364b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 365ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static long LongSubtraction() { 366ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil long a, b, c; 367bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 6L; 368bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2L; 369ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 370ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 371ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 372ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 373bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatSubtraction() constant_folding (before) 37431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const6:f\d+>> FloatConstant 6 37531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2:f\d+>> FloatConstant 2 37631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Sub:f\d+>> Sub [<<Const6>>,<<Const2>>] 37731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Sub>>] 37831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 379bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatSubtraction() constant_folding (after) 38031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const4:f\d+>> FloatConstant 4 38131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const4>>] 38231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 383bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatSubtraction() constant_folding (after) 38431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Sub 38531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 38631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static float FloatSubtraction() { 38731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain float a, b, c; 388bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 6F; 389bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2F; 39031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a - b; 39131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 39231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 39331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 394bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleSubtraction() constant_folding (before) 39531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const6:d\d+>> DoubleConstant 6 39631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2:d\d+>> DoubleConstant 2 39731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Sub:d\d+>> Sub [<<Const6>>,<<Const2>>] 39831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Sub>>] 39931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 400bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleSubtraction() constant_folding (after) 40131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const4:d\d+>> DoubleConstant 4 40231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const4>>] 40331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 404bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleSubtraction() constant_folding (after) 40531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Sub 40631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 40731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static double DoubleSubtraction() { 40831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain double a, b, c; 409bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 6D; 410bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2D; 41131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a - b; 41231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 41331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 41431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 415b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 416ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 417f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain * Exercise constant folding on multiplication. 418f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain */ 419f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 420bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntMultiplication() constant_folding (before) 421f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 422f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 423f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Mul:i\d+>> Mul [<<Const7>>,<<Const3>>] 424f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Mul>>] 425f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 426bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntMultiplication() constant_folding (after) 427f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const21:i\d+>> IntConstant 21 428f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Const21>>] 429f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 430bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntMultiplication() constant_folding (after) 431f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: Mul 432f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 433f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain public static int IntMultiplication() { 434f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain int a, b, c; 435bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 7; 436bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3; 437f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain c = a * b; 438f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain return c; 439f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain } 440f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 441bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongMultiplication() constant_folding (before) 442f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const7:j\d+>> LongConstant 7 443f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 444f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Mul:j\d+>> Mul [<<Const7>>,<<Const3>>] 445f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Mul>>] 446f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 447bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongMultiplication() constant_folding (after) 448f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const21:j\d+>> LongConstant 21 449f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Const21>>] 450f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 451bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongMultiplication() constant_folding (after) 452f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: Mul 453f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 454f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain public static long LongMultiplication() { 455f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain long a, b, c; 456bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 7L; 457bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3L; 458f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain c = a * b; 459f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain return c; 460f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain } 461f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 462bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatMultiplication() constant_folding (before) 46331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const7:f\d+>> FloatConstant 7 46431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const3:f\d+>> FloatConstant 3 46531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Mul:f\d+>> Mul [<<Const7>>,<<Const3>>] 46631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Mul>>] 46731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 468bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatMultiplication() constant_folding (after) 46931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const21:f\d+>> FloatConstant 21 47031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const21>>] 47131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 472bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatMultiplication() constant_folding (after) 47331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Mul 47431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 47531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static float FloatMultiplication() { 47631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain float a, b, c; 477bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 7F; 478bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3F; 47931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a * b; 48031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 48131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 48231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 483bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleMultiplication() constant_folding (before) 48431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const7:d\d+>> DoubleConstant 7 48531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const3:d\d+>> DoubleConstant 3 48631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Mul:d\d+>> Mul [<<Const7>>,<<Const3>>] 48731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Mul>>] 48831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 489bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleMultiplication() constant_folding (after) 49031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const21:d\d+>> DoubleConstant 21 49131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const21>>] 49231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 493bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleMultiplication() constant_folding (after) 49431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Mul 49531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 49631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static double DoubleMultiplication() { 49731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain double a, b, c; 498bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 7D; 499bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3D; 50031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a * b; 50131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 50231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 50331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 504f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 505f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /** 506f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain * Exercise constant folding on division. 507f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain */ 508f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 509bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntDivision() constant_folding (before) 510f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const8:i\d+>> IntConstant 8 511f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 512f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Div0Chk:i\d+>> DivZeroCheck [<<Const3>>] 513f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Div:i\d+>> Div [<<Const8>>,<<Div0Chk>>] 514f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Div>>] 515f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 516bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntDivision() constant_folding (after) 517f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 518f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Const2>>] 519f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 520bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntDivision() constant_folding (after) 521f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: DivZeroCheck 522f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: Div 523f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 524f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain public static int IntDivision() { 525f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain int a, b, c; 526bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8; 527bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3; 528f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain c = a / b; 529f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain return c; 530f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain } 531f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 532bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongDivision() constant_folding (before) 533f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const8:j\d+>> LongConstant 8 534f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 535f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Div0Chk:j\d+>> DivZeroCheck [<<Const3>>] 536f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Div:j\d+>> Div [<<Const8>>,<<Div0Chk>>] 537f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Div>>] 538f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 539bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongDivision() constant_folding (after) 540f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 541f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Const2>>] 542f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 543bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongDivision() constant_folding (after) 544f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: DivZeroCheck 545f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: Div 546f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 547f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain public static long LongDivision() { 548f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain long a, b, c; 549bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8L; 550bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3L; 551f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain c = a / b; 552f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain return c; 553f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain } 554f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 555bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatDivision() constant_folding (before) 55631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const8:f\d+>> FloatConstant 8 55731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2P5:f\d+>> FloatConstant 2.5 55831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Div:f\d+>> Div [<<Const8>>,<<Const2P5>>] 55931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Div>>] 56031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 561bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatDivision() constant_folding (after) 56231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const3P2:f\d+>> FloatConstant 3.2 56331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const3P2>>] 56431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 565bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatDivision() constant_folding (after) 56631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Div 56731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 56831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static float FloatDivision() { 56931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain float a, b, c; 570bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8F; 571bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2.5F; 57231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a / b; 57331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 57431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 57531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 576bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleDivision() constant_folding (before) 57731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const8:d\d+>> DoubleConstant 8 57831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2P5:d\d+>> DoubleConstant 2.5 57931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Div:d\d+>> Div [<<Const8>>,<<Const2P5>>] 58031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Div>>] 58131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 582bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleDivision() constant_folding (after) 58331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const3P2:d\d+>> DoubleConstant 3.2 58431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const3P2>>] 58531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 586bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleDivision() constant_folding (after) 58731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Div 58831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 58931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static double DoubleDivision() { 59031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain double a, b, c; 591bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8D; 592bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2.5D; 59331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a / b; 59431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 59531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 59631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 597f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 598f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /** 599f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain * Exercise constant folding on remainder. 600f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain */ 601f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 602bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntRemainder() constant_folding (before) 603f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const8:i\d+>> IntConstant 8 604f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 605f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Div0Chk:i\d+>> DivZeroCheck [<<Const3>>] 606f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Rem:i\d+>> Rem [<<Const8>>,<<Div0Chk>>] 607f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Rem>>] 608f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 609bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntRemainder() constant_folding (after) 610f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 611f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Const2>>] 612f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 613bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.IntRemainder() constant_folding (after) 614f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: DivZeroCheck 615f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: Rem 616f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 617f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain public static int IntRemainder() { 618f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain int a, b, c; 619bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8; 620bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3; 621f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain c = a % b; 622f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain return c; 623f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain } 624f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 625bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongRemainder() constant_folding (before) 626f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const8:j\d+>> LongConstant 8 627f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const3:j\d+>> LongConstant 3 628f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Div0Chk:j\d+>> DivZeroCheck [<<Const3>>] 629f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Rem:j\d+>> Rem [<<Const8>>,<<Div0Chk>>] 630f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Rem>>] 631f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 632bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongRemainder() constant_folding (after) 633f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 634f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-DAG: Return [<<Const2>>] 635f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 636bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.LongRemainder() constant_folding (after) 637f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: DivZeroCheck 638f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /// CHECK-NOT: Rem 639f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 640f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain public static long LongRemainder() { 641f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain long a, b, c; 642bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8L; 643bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 3L; 644f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain c = a % b; 645f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain return c; 646f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain } 647f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 648bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatRemainder() constant_folding (before) 64931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const8:f\d+>> FloatConstant 8 65031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2P5:f\d+>> FloatConstant 2.5 65131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Rem:f\d+>> Rem [<<Const8>>,<<Const2P5>>] 65231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Rem>>] 65331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 654bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatRemainder() constant_folding (after) 65531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const0P5:f\d+>> FloatConstant 0.5 65631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const0P5>>] 65731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 658bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.FloatRemainder() constant_folding (after) 65931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Rem 66031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 66131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static float FloatRemainder() { 66231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain float a, b, c; 663bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8F; 664bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2.5F; 66531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a % b; 66631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 66731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 66831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 669bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleRemainder() constant_folding (before) 67031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const8:d\d+>> DoubleConstant 8 67131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const2P5:d\d+>> DoubleConstant 2.5 67231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Rem:d\d+>> Rem [<<Const8>>,<<Const2P5>>] 67331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Rem>>] 67431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 675bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleRemainder() constant_folding (after) 67631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: <<Const0P5:d\d+>> DoubleConstant 0.5 67731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-DAG: Return [<<Const0P5>>] 67831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 679bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.DoubleRemainder() constant_folding (after) 68031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain /// CHECK-NOT: Rem 68131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 68231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static double DoubleRemainder() { 68331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain double a, b, c; 684bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 8D; 685bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2.5D; 68631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain c = a % b; 68731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain return c; 68831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 68931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 690f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 691f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain /** 6929867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain * Exercise constant folding on left shift. 6939867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain */ 6949867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 695bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ShlIntLong() constant_folding (before) 6969867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 6979867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 6989867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:i\d+>> TypeConversion [<<Const2L>>] 6999867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Shl:i\d+>> Shl [<<Const1>>,<<TypeConv>>] 7009867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Shl>>] 7019867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 702bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ShlIntLong() constant_folding (after) 7039867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const4:i\d+>> IntConstant 4 7049867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const4>>] 7059867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 706bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ShlIntLong() constant_folding (after) 7079867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Shl 7089867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7099867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static int ShlIntLong() { 710bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int lhs = 1; 711bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long rhs = 2; 7129867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs << rhs; 7139867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 7149867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 715bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ShlLongInt() constant_folding (before) 7169867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 7179867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 7189867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Shl:j\d+>> Shl [<<Const3L>>,<<Const2>>] 7199867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Shl>>] 7209867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 721bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ShlLongInt() constant_folding (after) 7229867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const12L:j\d+>> LongConstant 12 7239867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const12L>>] 7249867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 725bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ShlLongInt() constant_folding (after) 7269867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Shl 7279867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7289867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long ShlLongInt() { 729bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long lhs = 3; 730bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int rhs = 2; 7319867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs << rhs; 7329867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 7339867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7349867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7359867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /** 7369867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain * Exercise constant folding on right shift. 7379867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain */ 7389867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 739bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ShrIntLong() constant_folding (before) 7409867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 7419867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 7429867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:i\d+>> TypeConversion [<<Const2L>>] 7439867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Shr:i\d+>> Shr [<<Const7>>,<<TypeConv>>] 7449867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Shr>>] 7459867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 746bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ShrIntLong() constant_folding (after) 7479867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 7489867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const1>>] 7499867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 750bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ShrIntLong() constant_folding (after) 7519867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Shr 7529867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7539867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static int ShrIntLong() { 754bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int lhs = 7; 755bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long rhs = 2; 7569867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs >> rhs; 7579867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 7589867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 759bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ShrLongInt() constant_folding (before) 7609867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const9L:j\d+>> LongConstant 9 7619867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 7629867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Shr:j\d+>> Shr [<<Const9L>>,<<Const2>>] 7639867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Shr>>] 7649867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 765bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ShrLongInt() constant_folding (after) 7669867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 7679867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const2L>>] 7689867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 769bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ShrLongInt() constant_folding (after) 7709867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Shr 7719867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7729867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long ShrLongInt() { 773bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long lhs = 9; 774bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int rhs = 2; 7759867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs >> rhs; 7769867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 7779867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7789867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7799867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /** 7809867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain * Exercise constant folding on unsigned right shift. 7819867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain */ 7829867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 783bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.UShrIntLong() constant_folding (before) 7849867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<ConstM7:i\d+>> IntConstant -7 7859867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2L:j\d+>> LongConstant 2 7869867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:i\d+>> TypeConversion [<<Const2L>>] 7879867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<UShr:i\d+>> UShr [<<ConstM7>>,<<TypeConv>>] 7889867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<UShr>>] 7899867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 790bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.UShrIntLong() constant_folding (after) 7919867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<ConstRes:i\d+>> IntConstant 1073741822 7929867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<ConstRes>>] 7939867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 794bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.UShrIntLong() constant_folding (after) 7959867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: UShr 7969867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 7979867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static int UShrIntLong() { 798bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int lhs = -7; 799bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long rhs = 2; 8009867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs >>> rhs; 8019867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 8029867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 803bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.UShrLongInt() constant_folding (before) 8049867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<ConstM9L:j\d+>> LongConstant -9 8059867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 8069867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<UShr:j\d+>> UShr [<<ConstM9L>>,<<Const2>>] 8079867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<UShr>>] 8089867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 809bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.UShrLongInt() constant_folding (after) 8109867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<ConstRes:j\d+>> LongConstant 4611686018427387901 8119867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<ConstRes>>] 8129867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 813bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.UShrLongInt() constant_folding (after) 8149867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: UShr 8159867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8169867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long UShrLongInt() { 817bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long lhs = -9; 818bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int rhs = 2; 8199867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs >>> rhs; 8209867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 8219867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8229867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8239867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /** 8249867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain * Exercise constant folding on logical and. 8259867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain */ 8269867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 827bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.AndIntLong() constant_folding (before) 8289867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 8299867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 8309867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const10>>] 8319867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<And:j\d+>> And [<<TypeConv>>,<<Const3L>>] 8329867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<And>>] 8339867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 834bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.AndIntLong() constant_folding (after) 8359867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 8369867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const2>>] 8379867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 838bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.AndIntLong() constant_folding (after) 8399867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: And 8409867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8419867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long AndIntLong() { 842bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int lhs = 10; 843bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long rhs = 3; 8449867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs & rhs; 8459867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 8469867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 847bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.AndLongInt() constant_folding (before) 8489867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const10L:j\d+>> LongConstant 10 8499867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 8509867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const3>>] 85157e863c3739c310380e19252ad5746ff08d219c7David Brazdil /// CHECK-DAG: <<And:j\d+>> And [<<TypeConv>>,<<Const10L>>] 8529867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<And>>] 8539867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 854bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.AndLongInt() constant_folding (after) 8559867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const2:j\d+>> LongConstant 2 8569867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const2>>] 8579867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 858bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.AndLongInt() constant_folding (after) 8599867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: And 8609867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8619867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long AndLongInt() { 862bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long lhs = 10; 863bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int rhs = 3; 8649867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs & rhs; 8659867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 8669867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8679867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8689867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /** 8699867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain * Exercise constant folding on logical or. 8709867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain */ 8719867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 872bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.OrIntLong() constant_folding (before) 8739867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 8749867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 8759867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const10>>] 8769867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Or:j\d+>> Or [<<TypeConv>>,<<Const3L>>] 8779867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Or>>] 8789867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 879bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.OrIntLong() constant_folding (after) 8809867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const11:j\d+>> LongConstant 11 8819867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const11>>] 8829867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 883bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.OrIntLong() constant_folding (after) 8849867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Or 8859867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 8869867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long OrIntLong() { 887bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int lhs = 10; 888bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long rhs = 3; 8899867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs | rhs; 8909867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 8919867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 892bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.OrLongInt() constant_folding (before) 8939867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const10L:j\d+>> LongConstant 10 8949867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 8959867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const3>>] 89657e863c3739c310380e19252ad5746ff08d219c7David Brazdil /// CHECK-DAG: <<Or:j\d+>> Or [<<TypeConv>>,<<Const10L>>] 8979867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Or>>] 8989867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 899bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.OrLongInt() constant_folding (after) 9009867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const11:j\d+>> LongConstant 11 9019867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const11>>] 9029867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 903bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.OrLongInt() constant_folding (after) 9049867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Or 9059867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9069867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long OrLongInt() { 907bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long lhs = 10; 908bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int rhs = 3; 9099867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs | rhs; 9109867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 9119867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9129867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9139867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /** 9149867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain * Exercise constant folding on logical exclusive or. 9159867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain */ 9169867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 917bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.XorIntLong() constant_folding (before) 9189867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const10:i\d+>> IntConstant 10 9199867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3L:j\d+>> LongConstant 3 9209867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const10>>] 9219867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Xor:j\d+>> Xor [<<TypeConv>>,<<Const3L>>] 9229867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Xor>>] 9239867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 924bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.XorIntLong() constant_folding (after) 9259867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const9:j\d+>> LongConstant 9 9269867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const9>>] 9279867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 928bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.XorIntLong() constant_folding (after) 9299867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Xor 9309867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9319867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long XorIntLong() { 932bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int lhs = 10; 933bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long rhs = 3; 9349867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs ^ rhs; 9359867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 9369867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 937bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.XorLongInt() constant_folding (before) 9389867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const10L:j\d+>> LongConstant 10 9399867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 9409867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<TypeConv:j\d+>> TypeConversion [<<Const3>>] 94157e863c3739c310380e19252ad5746ff08d219c7David Brazdil /// CHECK-DAG: <<Xor:j\d+>> Xor [<<TypeConv>>,<<Const10L>>] 9429867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Xor>>] 9439867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 944bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.XorLongInt() constant_folding (after) 9459867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const9:j\d+>> LongConstant 9 9469867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const9>>] 9479867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 948bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.XorLongInt() constant_folding (after) 9499867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Xor 9509867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9519867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long XorLongInt() { 952bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long lhs = 10; 953bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int rhs = 3; 9549867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return lhs ^ rhs; 9559867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 9569867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9579867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 9589867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /** 959b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * Exercise constant folding on constant (static) condition. 960ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 961ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 962bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.StaticCondition() constant_folding (before) 963a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 964a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 965a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Cond:z\d+>> GreaterThanOrEqual [<<Const7>>,<<Const2>>] 966bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-DAG: If [<<Cond>>] 967ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 968bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.StaticCondition() constant_folding (after) 969a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 970bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-DAG: If [<<Const1>>] 971ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 972bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.StaticCondition() constant_folding (after) 973b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: GreaterThanOrEqual 974b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 975ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int StaticCondition() { 976ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 977bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 7; 978bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2; 979ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil if (a < b) 980ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 981ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil else 982ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 983ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 984ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 985ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 986b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 987ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 9889e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko * Exercise constant folding on constant (static) condition for null references. 9899e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko */ 9909e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 9915319d3cca5a9b8e9e3f59421818272b966575172Wojciech Staszkiewicz /// CHECK-START: int Main.StaticConditionNulls() constant_folding$after_inlining (before) 9929e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko /// CHECK-DAG: <<Null:l\d+>> NullConstant 9939e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko /// CHECK-DAG: <<Cond:z\d+>> NotEqual [<<Null>>,<<Null>>] 99474eb1b264691c4eb399d0858015a7fc13c476ac6David Brazdil /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Cond>>] 9959e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 9965319d3cca5a9b8e9e3f59421818272b966575172Wojciech Staszkiewicz /// CHECK-START: int Main.StaticConditionNulls() constant_folding$after_inlining (after) 9979e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 99874eb1b264691c4eb399d0858015a7fc13c476ac6David Brazdil /// CHECK-DAG: Select [{{i\d+}},{{i\d+}},<<Const0>>] 9999e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 10005319d3cca5a9b8e9e3f59421818272b966575172Wojciech Staszkiewicz /// CHECK-START: int Main.StaticConditionNulls() constant_folding$after_inlining (after) 10019e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko /// CHECK-NOT: NotEqual 10029e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 10039e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko private static Object getNull() { 10049e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko return null; 10059e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko } 10069e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 10079e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko public static int StaticConditionNulls() { 10089e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko Object a = getNull(); 10099e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko Object b = getNull(); 10109e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko return (a == b) ? 5 : 2; 10119e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko } 10129e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 10139e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko 10149e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko /** 1015b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * Exercise constant folding on a program with condition 1016b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * (i.e. jumps) leading to the creation of many blocks. 1017ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * 1018ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * The intent of this test is to ensure that all constant expressions 1019ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * are actually evaluated at compile-time, thanks to the reverse 1020ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * (forward) post-order traversal of the the dominator tree. 1021ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 1022ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 1023bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding (before) 1024a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const2:i\d+>> IntConstant 2 1025a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const5:i\d+>> IntConstant 5 1026a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Add:i\d+>> Add [<<Const5>>,<<Const2>>] 1027a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Sub:i\d+>> Sub [<<Const5>>,<<Const2>>] 1028bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Add>>,<<Sub>>] 1029a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Phi>>] 1030ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 1031bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding (after) 1032a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const3:i\d+>> IntConstant 3 1033a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const7:i\d+>> IntConstant 7 1034bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-DAG: <<Phi:i\d+>> Phi [<<Const7>>,<<Const3>>] 1035a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Phi>>] 1036ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 1037bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.JumpsAndConditionals(boolean) constant_folding (after) 1038b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Add 1039b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Sub 1040b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1041ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int JumpsAndConditionals(boolean cond) { 1042ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 1043bd44132f680430d44790015b42edffc05797e19cIgor Murashkin a = 5; 1044bd44132f680430d44790015b42edffc05797e19cIgor Murashkin b = 2; 1045ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil if (cond) 1046ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 1047ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil else 1048ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 1049ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 1050ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 10514846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1052b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1053b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames /** 1054b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames * Test optimizations of arithmetic identities yielding a constant result. 1055b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames */ 10564846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1057a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.And0(int) constant_folding (before) 1058a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1059a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1060a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<And:i\d+>> And [<<Arg>>,<<Const0>>] 1061a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<And>>] 10624846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1063a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.And0(int) constant_folding (after) 1064a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1065a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1066a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 10674846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1068b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.And0(int) constant_folding (after) 1069b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: And 1070b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1071b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static int And0(int arg) { 1072b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg & 0; 1073b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 10744846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1075a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.Mul0(long) constant_folding (before) 1076a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:j\d+>> ParameterValue 1077a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 107857e863c3739c310380e19252ad5746ff08d219c7David Brazdil /// CHECK-DAG: <<Mul:j\d+>> Mul [<<Const0>>,<<Arg>>] 1079a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Mul>>] 10804846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1081a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.Mul0(long) constant_folding (after) 1082a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:j\d+>> ParameterValue 1083a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1084a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 10854846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1086b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: long Main.Mul0(long) constant_folding (after) 1087b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Mul 1088b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1089b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static long Mul0(long arg) { 1090b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg * 0; 1091b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 10924846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1093a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.OrAllOnes(int) constant_folding (before) 1094a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1095a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstF:i\d+>> IntConstant -1 1096a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Or:i\d+>> Or [<<Arg>>,<<ConstF>>] 1097a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Or>>] 10984846d13744f07e82571d2882acc823d811ec942dDavid Brazdil 1099a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.OrAllOnes(int) constant_folding (after) 1100a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstF:i\d+>> IntConstant -1 1101a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<ConstF>>] 1102b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1103b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.OrAllOnes(int) constant_folding (after) 1104b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Or 1105b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1106b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static int OrAllOnes(int arg) { 1107b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg | -1; 1108b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1109b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1110a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.Rem0(long) constant_folding (before) 1111a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:j\d+>> ParameterValue 1112a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1113a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<DivZeroCheck:j\d+>> DivZeroCheck [<<Arg>>] 1114a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Rem:j\d+>> Rem [<<Const0>>,<<DivZeroCheck>>] 1115a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Rem>>] 1116b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1117a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.Rem0(long) constant_folding (after) 1118a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1119a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1120b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1121b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: long Main.Rem0(long) constant_folding (after) 1122b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Rem 1123b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1124b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static long Rem0(long arg) { 1125b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return 0 % arg; 1126b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1127b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1128a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.Rem1(int) constant_folding (before) 1129a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1130a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 1131a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Rem:i\d+>> Rem [<<Arg>>,<<Const1>>] 1132a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Rem>>] 1133b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1134a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.Rem1(int) constant_folding (after) 1135a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1136a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1137b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1138b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.Rem1(int) constant_folding (after) 1139b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Rem 1140b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1141b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static int Rem1(int arg) { 1142b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg % 1; 1143b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1144b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1145a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.RemN1(long) constant_folding (before) 1146a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:j\d+>> ParameterValue 1147a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstN1:j\d+>> LongConstant -1 1148a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<DivZeroCheck:j\d+>> DivZeroCheck [<<ConstN1>>] 1149a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Rem:j\d+>> Rem [<<Arg>>,<<DivZeroCheck>>] 1150a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Rem>>] 1151b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1152a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.RemN1(long) constant_folding (after) 1153a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1154a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1155b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1156b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: long Main.RemN1(long) constant_folding (after) 1157b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Rem 1158b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1159b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static long RemN1(long arg) { 1160b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg % -1; 1161b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1162b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1163a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.Shl0(int) constant_folding (before) 1164a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1165a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1166a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Shl:i\d+>> Shl [<<Const0>>,<<Arg>>] 1167a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Shl>>] 1168b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1169a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.Shl0(int) constant_folding (after) 1170a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1171a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1172a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1173b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1174b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.Shl0(int) constant_folding (after) 1175b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Shl 1176b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1177b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static int Shl0(int arg) { 1178b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return 0 << arg; 1179b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1180b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 11819867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-START: long Main.ShlLong0WithInt(int) constant_folding (before) 11829867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 11839867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const0L:j\d+>> LongConstant 0 11849867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Shl:j\d+>> Shl [<<Const0L>>,<<Arg>>] 11859867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Shl>>] 11869867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 11879867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-START: long Main.ShlLong0WithInt(int) constant_folding (after) 11889867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 11899867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: <<Const0L:j\d+>> LongConstant 0 11909867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-DAG: Return [<<Const0L>>] 11919867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 11929867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-START: long Main.ShlLong0WithInt(int) constant_folding (after) 11939867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain /// CHECK-NOT: Shl 11949867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 11959867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain public static long ShlLong0WithInt(int arg) { 11969867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain long long_zero = 0; 11979867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain return long_zero << arg; 11989867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain } 11999867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 1200a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.Shr0(int) constant_folding (before) 1201a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1202a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1203a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Shr:j\d+>> Shr [<<Const0>>,<<Arg>>] 1204a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Shr>>] 1205b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1206a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.Shr0(int) constant_folding (after) 1207a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1208a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1209a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1210b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1211b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: long Main.Shr0(int) constant_folding (after) 1212b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Shr 1213b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1214b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static long Shr0(int arg) { 1215b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return (long)0 >> arg; 1216b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1217b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1218a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.SubSameLong(long) constant_folding (before) 1219a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:j\d+>> ParameterValue 1220a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Sub:j\d+>> Sub [<<Arg>>,<<Arg>>] 1221a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Sub>>] 1222b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1223a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: long Main.SubSameLong(long) constant_folding (after) 1224a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:j\d+>> ParameterValue 1225a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1226a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1227b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1228b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: long Main.SubSameLong(long) constant_folding (after) 1229b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Sub 1230b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1231b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static long SubSameLong(long arg) { 1232b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg - arg; 1233b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1234b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1235a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.UShr0(int) constant_folding (before) 1236a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1237a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1238a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<UShr:i\d+>> UShr [<<Const0>>,<<Arg>>] 1239a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<UShr>>] 1240b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1241a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.UShr0(int) constant_folding (after) 1242a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1243a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1244a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1245b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1246b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.UShr0(int) constant_folding (after) 1247b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: UShr 1248b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1249b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static int UShr0(int arg) { 1250b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return 0 >>> arg; 1251b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1252b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1253a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.XorSameInt(int) constant_folding (before) 1254a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1255a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Xor:i\d+>> Xor [<<Arg>>,<<Arg>>] 1256a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Xor>>] 1257b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1258a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: int Main.XorSameInt(int) constant_folding (after) 1259a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:i\d+>> ParameterValue 1260a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1261a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1262b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1263b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-START: int Main.XorSameInt(int) constant_folding (after) 1264b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: Xor 1265b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1266b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames public static int XorSameInt(int arg) { 1267b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames return arg ^ arg; 1268b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames } 1269b2fd7bca70b580921eebf7c45769c39d2dfd8a5aAlexandre Rames 1270a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: boolean Main.CmpFloatGreaterThanNaN(float) constant_folding (before) 1271a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:f\d+>> ParameterValue 1272a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstNan:f\d+>> FloatConstant nan 1273a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1274a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: IntConstant 1 1275a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Cmp:i\d+>> Compare [<<Arg>>,<<ConstNan>>] 1276a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Le:z\d+>> LessThanOrEqual [<<Cmp>>,<<Const0>>] 1277a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: If [<<Le>>] 12783b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 1279a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: boolean Main.CmpFloatGreaterThanNaN(float) constant_folding (after) 1280a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: ParameterValue 1281a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: FloatConstant nan 1282a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: IntConstant 0 1283a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 1284a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: If [<<Const1>>] 12853b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 1286a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: boolean Main.CmpFloatGreaterThanNaN(float) constant_folding (after) 1287a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-NOT: Compare 1288a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-NOT: LessThanOrEqual 12893b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 12903b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain public static boolean CmpFloatGreaterThanNaN(float arg) { 12913b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain return arg > Float.NaN; 12923b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain } 12933b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 1294a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: boolean Main.CmpDoubleLessThanNaN(double) constant_folding (before) 1295a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Arg:d\d+>> ParameterValue 1296a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstNan:d\d+>> DoubleConstant nan 1297a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1298a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: IntConstant 1 1299a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Cmp:i\d+>> Compare [<<Arg>>,<<ConstNan>>] 1300a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Ge:z\d+>> GreaterThanOrEqual [<<Cmp>>,<<Const0>>] 1301a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: If [<<Ge>>] 13023b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 1303a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: boolean Main.CmpDoubleLessThanNaN(double) constant_folding (after) 1304a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: ParameterValue 1305a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: DoubleConstant nan 1306a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: IntConstant 0 1307a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 1308a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: If [<<Const1>>] 13093b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 1310a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-START: boolean Main.CmpDoubleLessThanNaN(double) constant_folding (after) 1311a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-NOT: Compare 1312a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-NOT: GreaterThanOrEqual 13133b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 13143b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain public static boolean CmpDoubleLessThanNaN(double arg) { 13153b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain return arg < Double.NaN; 13163b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain } 13173b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain 1318b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1319b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /** 1320b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain * Exercise constant folding on type conversions. 1321b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain */ 1322b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1323bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnInt33() constant_folding (before) 1324a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:j\d+>> LongConstant 33 1325a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:i\d+>> TypeConversion [<<Const33>>] 1326a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1327e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1328bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnInt33() constant_folding (after) 1329a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 1330a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const33>>] 1331e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1332bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnInt33() constant_folding (after) 1333b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1334b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1335e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static int ReturnInt33() { 1336bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long imm = 33L; 1337e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (int) imm; 1338e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1339e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1340bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnIntMax() constant_folding (before) 1341a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstMax:f\d+>> FloatConstant 1e+34 1342a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:i\d+>> TypeConversion [<<ConstMax>>] 1343a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1344e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1345bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnIntMax() constant_folding (after) 1346a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstMax:i\d+>> IntConstant 2147483647 1347a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<ConstMax>>] 1348e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1349bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnIntMax() constant_folding (after) 1350b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1351b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1352e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static int ReturnIntMax() { 1353bd44132f680430d44790015b42edffc05797e19cIgor Murashkin float imm = 1.0e34f; 1354e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (int) imm; 1355e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1356e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1357bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnInt0() constant_folding (before) 1358a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstNaN:d\d+>> DoubleConstant nan 1359a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:i\d+>> TypeConversion [<<ConstNaN>>] 1360a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1361e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1362bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnInt0() constant_folding (after) 1363a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 1364a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1365e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1366bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: int Main.ReturnInt0() constant_folding (after) 1367b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1368b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1369e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static int ReturnInt0() { 1370bd44132f680430d44790015b42edffc05797e19cIgor Murashkin double imm = Double.NaN; 1371e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (int) imm; 1372e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1373e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1374bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong33() constant_folding (before) 1375a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 1376a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:j\d+>> TypeConversion [<<Const33>>] 1377a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1378e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1379bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong33() constant_folding (after) 1380a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:j\d+>> LongConstant 33 1381a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const33>>] 1382e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1383bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong33() constant_folding (after) 1384b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1385b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1386e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static long ReturnLong33() { 1387bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int imm = 33; 1388e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (long) imm; 1389e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1390e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1391bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong34() constant_folding (before) 1392a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const34:f\d+>> FloatConstant 34 1393a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:j\d+>> TypeConversion [<<Const34>>] 1394a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1395e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1396bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong34() constant_folding (after) 1397a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const34:j\d+>> LongConstant 34 1398a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const34>>] 1399e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1400bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong34() constant_folding (after) 1401b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1402b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1403e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static long ReturnLong34() { 1404bd44132f680430d44790015b42edffc05797e19cIgor Murashkin float imm = 34.0f; 1405e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (long) imm; 1406e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1407e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1408bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong0() constant_folding (before) 1409a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<ConstNaN:d\d+>> DoubleConstant nan 1410a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:j\d+>> TypeConversion [<<ConstNaN>>] 1411a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1412e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1413bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong0() constant_folding (after) 1414a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const0:j\d+>> LongConstant 0 1415a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const0>>] 1416e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1417bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: long Main.ReturnLong0() constant_folding (after) 1418b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1419b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1420e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static long ReturnLong0() { 1421bd44132f680430d44790015b42edffc05797e19cIgor Murashkin double imm = -Double.NaN; 1422e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (long) imm; 1423e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1424e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1425bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat33() constant_folding (before) 1426a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 1427a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:f\d+>> TypeConversion [<<Const33>>] 1428a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1429e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1430bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat33() constant_folding (after) 1431a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:f\d+>> FloatConstant 33 1432a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const33>>] 1433e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1434bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat33() constant_folding (after) 1435b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1436b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1437e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static float ReturnFloat33() { 1438bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int imm = 33; 1439e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (float) imm; 1440e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1441e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1442bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat34() constant_folding (before) 1443a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const34:j\d+>> LongConstant 34 1444a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:f\d+>> TypeConversion [<<Const34>>] 1445a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1446e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1447bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat34() constant_folding (after) 1448a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const34:f\d+>> FloatConstant 34 1449a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const34>>] 1450e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1451bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat34() constant_folding (after) 1452b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1453b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1454e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static float ReturnFloat34() { 1455bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long imm = 34L; 1456e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (float) imm; 1457e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1458e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1459bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat99P25() constant_folding (before) 1460a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const:d\d+>> DoubleConstant 99.25 1461a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:f\d+>> TypeConversion [<<Const>>] 1462a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1463e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1464bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat99P25() constant_folding (after) 1465a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const:f\d+>> FloatConstant 99.25 1466a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const>>] 1467e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1468bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: float Main.ReturnFloat99P25() constant_folding (after) 1469b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1470b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1471e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static float ReturnFloat99P25() { 1472bd44132f680430d44790015b42edffc05797e19cIgor Murashkin double imm = 99.25; 1473e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (float) imm; 1474e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1475e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1476bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble33() constant_folding (before) 1477a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:i\d+>> IntConstant 33 1478a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:d\d+>> TypeConversion [<<Const33>>] 1479a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1480e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1481bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble33() constant_folding (after) 1482a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const33:d\d+>> DoubleConstant 33 1483a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const33>>] 1484e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1485e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static double ReturnDouble33() { 1486bd44132f680430d44790015b42edffc05797e19cIgor Murashkin int imm = 33; 1487e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (double) imm; 1488e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1489e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1490bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble34() constant_folding (before) 1491a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const34:j\d+>> LongConstant 34 1492a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:d\d+>> TypeConversion [<<Const34>>] 1493a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1494e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1495bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble34() constant_folding (after) 1496a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const34:d\d+>> DoubleConstant 34 1497a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const34>>] 1498e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1499bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble34() constant_folding (after) 1500b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1501b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1502e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static double ReturnDouble34() { 1503bd44132f680430d44790015b42edffc05797e19cIgor Murashkin long imm = 34L; 1504e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (double) imm; 1505e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1506e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1507bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble99P25() constant_folding (before) 1508a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const:f\d+>> FloatConstant 99.25 1509a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Convert:d\d+>> TypeConversion [<<Const>>] 1510a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Convert>>] 1511e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1512bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble99P25() constant_folding (after) 1513a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: <<Const:d\d+>> DoubleConstant 99.25 1514a06d66a4ee60926127b9498b7ff0b3e37a24fccfDavid Brazdil /// CHECK-DAG: Return [<<Const>>] 1515e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1516bd44132f680430d44790015b42edffc05797e19cIgor Murashkin /// CHECK-START: double Main.ReturnDouble99P25() constant_folding (after) 1517b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain /// CHECK-NOT: TypeConversion 1518b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1519e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell public static double ReturnDouble99P25() { 1520bd44132f680430d44790015b42edffc05797e19cIgor Murashkin float imm = 99.25f; 1521e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell return (double) imm; 1522e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell } 1523e82549b14c7def0a45461183964f7e6a34cbb70cMark Mendell 1524b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 152531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain public static void main(String[] args) throws Exception { 1526b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(-42, IntNegation()); 1527c90bc7c07f9bd24b5424cfb1e3f064fbae5334d6Roland Levillain assertLongEquals(-42L, LongNegation()); 152831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertFloatEquals(-42F, FloatNegation()); 152931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertDoubleEquals(-42D, DoubleNegation()); 1530b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1531b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(3, IntAddition1()); 1532b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(14, IntAddition2()); 1533138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung assertIntEquals(14, smaliIntAddition2()); 1534138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung assertIntEquals(14, smaliIntAddition2AddAndMove()); 1535b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(3L, LongAddition()); 153631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertFloatEquals(3F, FloatAddition()); 153731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertDoubleEquals(3D, DoubleAddition()); 1538b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1539b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(4, IntSubtraction()); 1540b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(4L, LongSubtraction()); 154131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertFloatEquals(4F, FloatSubtraction()); 154231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertDoubleEquals(4D, DoubleSubtraction()); 1543b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1544f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain assertIntEquals(21, IntMultiplication()); 1545f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain assertLongEquals(21L, LongMultiplication()); 154631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertFloatEquals(21F, FloatMultiplication()); 154731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertDoubleEquals(21D, DoubleMultiplication()); 1548f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 1549f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain assertIntEquals(2, IntDivision()); 1550f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain assertLongEquals(2L, LongDivision()); 155131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertFloatEquals(3.2F, FloatDivision()); 155231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertDoubleEquals(3.2D, DoubleDivision()); 1553f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 1554f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain assertIntEquals(2, IntRemainder()); 1555f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain assertLongEquals(2L, LongRemainder()); 155631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertFloatEquals(0.5F, FloatRemainder()); 155731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertDoubleEquals(0.5D, DoubleRemainder()); 1558f7746ad0063b02f19f3448c5ef4db7e4925d4f16Roland Levillain 15599867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertIntEquals(4, ShlIntLong()); 15609867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(12L, ShlLongInt()); 15619867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 15629867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertIntEquals(1, ShrIntLong()); 15639867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(2L, ShrLongInt()); 15649867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 15659867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertIntEquals(1073741822, UShrIntLong()); 15669867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(4611686018427387901L, UShrLongInt()); 15679867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 15689867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(2, AndIntLong()); 15699867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(2, AndLongInt()); 15709867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 15719867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(11, OrIntLong()); 15729867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(11, OrLongInt()); 15739867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 15749867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(9, XorIntLong()); 15759867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(9, XorLongInt()); 15769867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain 1577b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(5, StaticCondition()); 15789e23df5c21bed53ead79e3131b67105abc8871e4Vladimir Marko assertIntEquals(5, StaticConditionNulls()); 1579b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1580b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(7, JumpsAndConditionals(true)); 1581b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(3, JumpsAndConditionals(false)); 1582138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung assertIntEquals(7, smaliJumpsAndConditionals(true)); 1583138b48583fa89e8ced7513f2f6a2548e79273db9Alan Leung assertIntEquals(3, smaliJumpsAndConditionals(false)); 1584b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 15853b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain int arbitrary = 123456; // Value chosen arbitrarily. 1586b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1587b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(0, And0(arbitrary)); 1588b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(0, Mul0(arbitrary)); 1589b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(-1, OrAllOnes(arbitrary)); 1590b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(0, Rem0(arbitrary)); 1591b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(0, Rem1(arbitrary)); 1592b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(0, RemN1(arbitrary)); 1593b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(0, Shl0(arbitrary)); 15949867bc722f7c41e07a95397bc08b790cd21dc758Roland Levillain assertLongEquals(0, ShlLong0WithInt(arbitrary)); 1595b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(0, Shr0(arbitrary)); 1596b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(0, SubSameLong(arbitrary)); 1597b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(0, UShr0(arbitrary)); 1598b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(0, XorSameInt(arbitrary)); 1599b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 16003b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain assertFalse(CmpFloatGreaterThanNaN(arbitrary)); 16013b55ebb22156e1f3496cd1ee4a05e03b4780e579Roland Levillain assertFalse(CmpDoubleLessThanNaN(arbitrary)); 1602b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 160331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Main main = new Main(); 160431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(1, main.smaliCmpLongConstants()); 160531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(-1, main.smaliCmpGtFloatConstants()); 160631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(-1, main.smaliCmpLtFloatConstants()); 160731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(-1, main.smaliCmpGtDoubleConstants()); 160831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(-1, main.smaliCmpLtDoubleConstants()); 160931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 161031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(0, main.smaliCmpLongSameConstant()); 161131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(0, main.smaliCmpGtFloatSameConstant()); 161231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(0, main.smaliCmpLtFloatSameConstant()); 161331dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(0, main.smaliCmpGtDoubleSameConstant()); 161431dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(0, main.smaliCmpLtDoubleSameConstant()); 161531dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 161631dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(1, main.smaliCmpGtFloatConstantWithNaN()); 161731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(-1, main.smaliCmpLtFloatConstantWithNaN()); 161831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(1, main.smaliCmpGtDoubleConstantWithNaN()); 161931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain assertIntEquals(-1, main.smaliCmpLtDoubleConstantWithNaN()); 162031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 1621b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(33, ReturnInt33()); 1622b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(2147483647, ReturnIntMax()); 1623b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertIntEquals(0, ReturnInt0()); 1624b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1625b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(33, ReturnLong33()); 1626b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(34, ReturnLong34()); 1627b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertLongEquals(0, ReturnLong0()); 1628b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1629b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertFloatEquals(33, ReturnFloat33()); 1630b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertFloatEquals(34, ReturnFloat34()); 1631b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertFloatEquals(99.25f, ReturnFloat99P25()); 1632b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain 1633b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertDoubleEquals(33, ReturnDouble33()); 1634b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertDoubleEquals(34, ReturnDouble34()); 1635b65eb5058dd6178d329e51e9dfd6d8cf58c6a0bbRoland Levillain assertDoubleEquals(99.25, ReturnDouble99P25()); 16364846d13744f07e82571d2882acc823d811ec942dDavid Brazdil } 163731dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 163831dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain Main() throws ClassNotFoundException { 163931dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain testCmp = Class.forName("TestCmp"); 164031dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain } 164131dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain 164231dd3d60491148d345c1edae1ccd090a1b67dd2bRoland Levillain private Class<?> testCmp; 1643ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil} 1644