1 ; RUN: llc -mcpu=pwr7 < %s | FileCheck %s 2 target datalayout = "E-m:e-i64:64-n32:64" 3 target triple = "powerpc64-unknown-linux-gnu" 4 5 ; Function Attrs: nounwind readnone 6 define signext i32 @foo(i32 signext %a) #0 { 7 entry: 8 %mul = mul nsw i32 %a, %a 9 %shr2 = lshr i32 %mul, 5 10 ret i32 %shr2 11 12 ; CHECK-LABEL: @foo 13 ; CHECK-NOT: rldicl 3, {{[0-9]+}}, 0, 32 14 ; CHECK: blr 15 } 16 17 define zeroext i32 @test6(i32 zeroext %x) #0 { 18 entry: 19 %and = lshr i32 %x, 16 20 %shr = and i32 %and, 255 21 %and1 = shl i32 %x, 16 22 %shl = and i32 %and1, 16711680 23 %or = or i32 %shr, %shl 24 ret i32 %or 25 26 ; CHECK-LABEL: @test6 27 ; CHECK-NOT: rldicl 3, {{[0-9]+}}, 0, 32 28 ; CHECK: blr 29 } 30 31 define zeroext i32 @min(i32 zeroext %a, i32 zeroext %b) #0 { 32 entry: 33 %cmp = icmp ule i32 %a, %b 34 %cond = select i1 %cmp, i32 %a, i32 %b 35 ret i32 %cond 36 37 ; CHECK-LABEL: @min 38 ; CHECK-NOT: rldicl 3, {{[0-9]+}}, 0, 32 39 ; CHECK: blr 40 } 41 42 ; Function Attrs: nounwind readnone 43 declare i32 @llvm.bswap.i32(i32) #0 44 45 ; Function Attrs: nounwind readonly 46 define zeroext i32 @bs32(i32* nocapture readonly %x) #1 { 47 entry: 48 %0 = load i32, i32* %x, align 4 49 %1 = tail call i32 @llvm.bswap.i32(i32 %0) 50 ret i32 %1 51 52 ; CHECK-LABEL: @bs32 53 ; CHECK-NOT: rldicl 3, {{[0-9]+}}, 0, 32 54 ; CHECK: blr 55 } 56 57 ; Function Attrs: nounwind readonly 58 define zeroext i16 @bs16(i16* nocapture readonly %x) #1 { 59 entry: 60 %0 = load i16, i16* %x, align 2 61 %1 = tail call i16 @llvm.bswap.i16(i16 %0) 62 ret i16 %1 63 64 ; CHECK-LABEL: @bs16 65 ; CHECK-NOT: rldicl 3, {{[0-9]+}}, 0, 32 66 ; CHECK: blr 67 } 68 69 ; Function Attrs: nounwind readnone 70 declare i16 @llvm.bswap.i16(i16) #0 71 72 ; Function Attrs: nounwind readnone 73 define zeroext i32 @ctlz32(i32 zeroext %x) #0 { 74 entry: 75 %0 = tail call i32 @llvm.ctlz.i32(i32 %x, i1 false) 76 ret i32 %0 77 78 ; CHECK-LABEL: @ctlz32 79 ; CHECK-NOT: rldicl 3, {{[0-9]+}}, 0, 32 80 ; CHECK: blr 81 } 82 83 ; Function Attrs: nounwind readnone 84 declare i32 @llvm.ctlz.i32(i32, i1) #0 85 86 87 attributes #0 = { nounwind readnone } 88 attributes #1 = { nounwind readonly } 89 90