1*9880d681SAndroid Build Coastguard Worker; Ensure constant propagation of remainder instructions is working correctly. 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -constprop -die -S | not grep rem 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i32 @test1() { 6*9880d681SAndroid Build Coastguard Worker %R = srem i32 4, 3 ; <i32> [#uses=1] 7*9880d681SAndroid Build Coastguard Worker ret i32 %R 8*9880d681SAndroid Build Coastguard Worker} 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine i32 @test2() { 11*9880d681SAndroid Build Coastguard Worker %R = srem i32 123, -23 ; <i32> [#uses=1] 12*9880d681SAndroid Build Coastguard Worker ret i32 %R 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine float @test3() { 16*9880d681SAndroid Build Coastguard Worker %R = frem float 0x4028E66660000000, 0x405ECDA1C0000000 ; <float> [#uses=1] 17*9880d681SAndroid Build Coastguard Worker ret float %R 18*9880d681SAndroid Build Coastguard Worker} 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine double @test4() { 21*9880d681SAndroid Build Coastguard Worker %R = frem double 0x4073833BEE07AFF8, 0x4028AAABB2A0D19C ; <double> [#uses=1] 22*9880d681SAndroid Build Coastguard Worker ret double %R 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25