1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86 | grep sar | count 1 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=x86-64 | not grep sar 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @test(i32 %f12) nounwind { 5*9880d681SAndroid Build Coastguard Worker %tmp7.25 = lshr i32 %f12, 16 6*9880d681SAndroid Build Coastguard Worker %tmp7.26 = trunc i32 %tmp7.25 to i8 7*9880d681SAndroid Build Coastguard Worker %tmp78.2 = sext i8 %tmp7.26 to i32 8*9880d681SAndroid Build Coastguard Worker ret i32 %tmp78.2 9*9880d681SAndroid Build Coastguard Worker} 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i32 %f12) nounwind { 12*9880d681SAndroid Build Coastguard Worker %f11 = shl i32 %f12, 8 13*9880d681SAndroid Build Coastguard Worker %tmp7.25 = ashr i32 %f11, 24 14*9880d681SAndroid Build Coastguard Worker ret i32 %tmp7.25 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine i32 @test3(i32 %f12) nounwind { 18*9880d681SAndroid Build Coastguard Worker %f11 = shl i32 %f12, 13 19*9880d681SAndroid Build Coastguard Worker %tmp7.25 = ashr i32 %f11, 24 20*9880d681SAndroid Build Coastguard Worker ret i32 %tmp7.25 21*9880d681SAndroid Build Coastguard Worker} 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Workerdefine i64 @test4(i64 %f12) nounwind { 24*9880d681SAndroid Build Coastguard Worker %f11 = shl i64 %f12, 32 25*9880d681SAndroid Build Coastguard Worker %tmp7.25 = ashr i64 %f11, 32 26*9880d681SAndroid Build Coastguard Worker ret i64 %tmp7.25 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine i16 @test5(i16 %f12) nounwind { 30*9880d681SAndroid Build Coastguard Worker %f11 = shl i16 %f12, 2 31*9880d681SAndroid Build Coastguard Worker %tmp7.25 = ashr i16 %f11, 8 32*9880d681SAndroid Build Coastguard Worker ret i16 %tmp7.25 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine i16 @test6(i16 %f12) nounwind { 36*9880d681SAndroid Build Coastguard Worker %f11 = shl i16 %f12, 8 37*9880d681SAndroid Build Coastguard Worker %tmp7.25 = ashr i16 %f11, 8 38*9880d681SAndroid Build Coastguard Worker ret i16 %tmp7.25 39*9880d681SAndroid Build Coastguard Worker} 40