1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=ppc32 | not grep "extsh\|rlwinm" 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare signext i16 @foo() 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i32 @test1(i16 signext %X) { 6*9880d681SAndroid Build Coastguard Worker %Y = sext i16 %X to i32 ;; dead 7*9880d681SAndroid Build Coastguard Worker ret i32 %Y 8*9880d681SAndroid Build Coastguard Worker} 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine i32 @test2(i16 zeroext %X) { 11*9880d681SAndroid Build Coastguard Worker %Y = sext i16 %X to i32 12*9880d681SAndroid Build Coastguard Worker %Z = and i32 %Y, 65535 ;; dead 13*9880d681SAndroid Build Coastguard Worker ret i32 %Z 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine void @test3() { 17*9880d681SAndroid Build Coastguard Worker %tmp.0 = call signext i16 @foo() ;; no extsh! 18*9880d681SAndroid Build Coastguard Worker %tmp.1 = icmp slt i16 %tmp.0, 1234 19*9880d681SAndroid Build Coastguard Worker br i1 %tmp.1, label %then, label %UnifiedReturnBlock 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerthen: 22*9880d681SAndroid Build Coastguard Worker call i32 @test1(i16 signext 0) 23*9880d681SAndroid Build Coastguard Worker ret void 24*9880d681SAndroid Build Coastguard WorkerUnifiedReturnBlock: 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine i32 @test4(i16* %P) { 29*9880d681SAndroid Build Coastguard Worker %tmp.1 = load i16, i16* %P 30*9880d681SAndroid Build Coastguard Worker %tmp.2 = zext i16 %tmp.1 to i32 31*9880d681SAndroid Build Coastguard Worker %tmp.3 = and i32 %tmp.2, 255 32*9880d681SAndroid Build Coastguard Worker ret i32 %tmp.3 33*9880d681SAndroid Build Coastguard Worker} 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerdefine i32 @test5(i16* %P) { 36*9880d681SAndroid Build Coastguard Worker %tmp.1 = load i16, i16* %P 37*9880d681SAndroid Build Coastguard Worker %tmp.2 = bitcast i16 %tmp.1 to i16 38*9880d681SAndroid Build Coastguard Worker %tmp.3 = zext i16 %tmp.2 to i32 39*9880d681SAndroid Build Coastguard Worker %tmp.4 = and i32 %tmp.3, 255 40*9880d681SAndroid Build Coastguard Worker ret i32 %tmp.4 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdefine i32 @test6(i32* %P) { 44*9880d681SAndroid Build Coastguard Worker %tmp.1 = load i32, i32* %P 45*9880d681SAndroid Build Coastguard Worker %tmp.2 = and i32 %tmp.1, 255 46*9880d681SAndroid Build Coastguard Worker ret i32 %tmp.2 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @test7(float %a) { 50*9880d681SAndroid Build Coastguard Worker %tmp.1 = fptoui float %a to i16 51*9880d681SAndroid Build Coastguard Worker ret i16 %tmp.1 52*9880d681SAndroid Build Coastguard Worker} 53