1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test1' 4*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: (trunc i{{.*}}ext 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdefine i16 @test1(i8 %x) { 7*9880d681SAndroid Build Coastguard Worker %A = sext i8 %x to i32 8*9880d681SAndroid Build Coastguard Worker %B = trunc i32 %A to i16 9*9880d681SAndroid Build Coastguard Worker ret i16 %B 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test2' 13*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: (trunc i{{.*}}ext 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine i8 @test2(i16 %x) { 16*9880d681SAndroid Build Coastguard Worker %A = sext i16 %x to i32 17*9880d681SAndroid Build Coastguard Worker %B = trunc i32 %A to i8 18*9880d681SAndroid Build Coastguard Worker ret i8 %B 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test3' 22*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: (trunc i{{.*}}ext 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerdefine i16 @test3(i16 %x) { 25*9880d681SAndroid Build Coastguard Worker %A = sext i16 %x to i32 26*9880d681SAndroid Build Coastguard Worker %B = trunc i32 %A to i16 27*9880d681SAndroid Build Coastguard Worker ret i16 %B 28*9880d681SAndroid Build Coastguard Worker} 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Worker; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test4' 31*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: (trunc i{{.*}}ext 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerdefine i16 @test4(i8 %x) { 34*9880d681SAndroid Build Coastguard Worker %A = zext i8 %x to i32 35*9880d681SAndroid Build Coastguard Worker %B = trunc i32 %A to i16 36*9880d681SAndroid Build Coastguard Worker ret i16 %B 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Worker; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test5' 40*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: (trunc i{{.*}}ext 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Workerdefine i8 @test5(i16 %x) { 43*9880d681SAndroid Build Coastguard Worker %A = zext i16 %x to i32 44*9880d681SAndroid Build Coastguard Worker %B = trunc i32 %A to i8 45*9880d681SAndroid Build Coastguard Worker ret i8 %B 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test6' 49*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: (trunc i{{.*}}ext 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine i16 @test6(i16 %x) { 52*9880d681SAndroid Build Coastguard Worker %A = zext i16 %x to i32 53*9880d681SAndroid Build Coastguard Worker %B = trunc i32 %A to i16 54*9880d681SAndroid Build Coastguard Worker ret i16 %B 55*9880d681SAndroid Build Coastguard Worker} 56