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 fdiv 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@X = constant i212 42 7*9880d681SAndroid Build Coastguard Worker@Y = constant [2 x { i212, float }] [ { i212, float } { i212 12, float 1.0 }, 8*9880d681SAndroid Build Coastguard Worker { i212, float } { i212 37, float 0x3FF3B2FEC0000000 } ] 9*9880d681SAndroid Build Coastguard Workerdefine i212 @test1() { 10*9880d681SAndroid Build Coastguard Worker %B = load i212, i212* @X 11*9880d681SAndroid Build Coastguard Worker ret i212 %B 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine internal float @test2() { 15*9880d681SAndroid Build Coastguard Worker %A = getelementptr [2 x { i212, float}], [2 x { i212, float}]* @Y, i32 0, i32 1, i32 1 16*9880d681SAndroid Build Coastguard Worker %B = load float, float* %A 17*9880d681SAndroid Build Coastguard Worker ret float %B 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine internal i212 @test3() { 21*9880d681SAndroid Build Coastguard Worker %A = getelementptr [2 x { i212, float}], [2 x { i212, float}]* @Y, i32 0, i32 0, i32 0 22*9880d681SAndroid Build Coastguard Worker %B = load i212, i212* %A 23*9880d681SAndroid Build Coastguard Worker ret i212 %B 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine float @All() 27*9880d681SAndroid Build Coastguard Worker{ 28*9880d681SAndroid Build Coastguard Worker %A = call float @test2() 29*9880d681SAndroid Build Coastguard Worker %B = call i212 @test3() 30*9880d681SAndroid Build Coastguard Worker %C = mul i212 %B, -1234567 31*9880d681SAndroid Build Coastguard Worker %D = sitofp i212 %C to float 32*9880d681SAndroid Build Coastguard Worker %E = fdiv float %A, %D 33*9880d681SAndroid Build Coastguard Worker ret float %E 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker 37