1*9880d681SAndroid Build Coastguard Worker; This test makes sure that these instructions are properly constant propagated. 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -ipsccp -S | not grep load 4*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -ipsccp -S | not grep add 5*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -ipsccp -S | not grep phi 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker@Y = constant [2 x { i212, float }] [ { i212, float } { i212 12, float 1.0 }, 9*9880d681SAndroid Build Coastguard Worker { i212, float } { i212 37, float 2.0 } ] 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine internal float @test2() { 12*9880d681SAndroid Build Coastguard Worker %A = getelementptr [2 x { i212, float}], [2 x { i212, float}]* @Y, i32 0, i32 1, i32 1 13*9880d681SAndroid Build Coastguard Worker %B = load float, float* %A 14*9880d681SAndroid Build Coastguard Worker ret float %B 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine internal float @test3() { 18*9880d681SAndroid Build Coastguard Worker %A = getelementptr [2 x { i212, float}], [2 x { i212, float}]* @Y, i32 0, i32 0, i32 1 19*9880d681SAndroid Build Coastguard Worker %B = load float, float* %A 20*9880d681SAndroid Build Coastguard Worker ret float %B 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine internal float @test() 24*9880d681SAndroid Build Coastguard Worker{ 25*9880d681SAndroid Build Coastguard Worker %A = call float @test2() 26*9880d681SAndroid Build Coastguard Worker %B = call float @test3() 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker %E = fdiv float %B, %A 29*9880d681SAndroid Build Coastguard Worker ret float %E 30*9880d681SAndroid Build Coastguard Worker} 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine float @All() 33*9880d681SAndroid Build Coastguard Worker{ 34*9880d681SAndroid Build Coastguard Worker %A = call float @test() 35*9880d681SAndroid Build Coastguard Worker %B = fcmp oge float %A, 1.0 36*9880d681SAndroid Build Coastguard Worker br i1 %B, label %T, label %F 37*9880d681SAndroid Build Coastguard WorkerT: 38*9880d681SAndroid Build Coastguard Worker %C = fadd float %A, 1.0 39*9880d681SAndroid Build Coastguard Worker br label %exit 40*9880d681SAndroid Build Coastguard WorkerF: 41*9880d681SAndroid Build Coastguard Worker %D = fadd float %A, 2.0 42*9880d681SAndroid Build Coastguard Worker br label %exit 43*9880d681SAndroid Build Coastguard Workerexit: 44*9880d681SAndroid Build Coastguard Worker %E = phi float [%C, %T], [%D, %F] 45*9880d681SAndroid Build Coastguard Worker ret float %E 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker 50