1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4 2; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s 3; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=-isel < %s | FileCheck --check-prefix=CHECK-NO-ISEL %s 4target datalayout = "E-m:e-i64:64-n32:64" 5target triple = "powerpc64-unknown-linux-gnu" 6 7; Function Attrs: nounwind readnone 8define signext i32 @foo(i32 signext %a, i32 signext %b) #0 { 9; CHECK-LABEL: foo: 10; CHECK: # %bb.0: # %entry 11; CHECK-NEXT: cmpw 3, 4 12; CHECK-NEXT: li 3, 0 13; CHECK-NEXT: li 4, 16 14; CHECK-NEXT: isellt 3, 4, 3 15; CHECK-NEXT: blr 16; 17; CHECK-NO-ISEL-LABEL: foo: 18; CHECK-NO-ISEL: # %bb.0: # %entry 19; CHECK-NO-ISEL-NEXT: cmpw 3, 4 20; CHECK-NO-ISEL-NEXT: li 3, 16 21; CHECK-NO-ISEL-NEXT: bclr 12, 0, 0 22; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry 23; CHECK-NO-ISEL-NEXT: li 3, 0 24; CHECK-NO-ISEL-NEXT: blr 25entry: 26 %cmp = icmp slt i32 %a, %b 27 %conv = zext i1 %cmp to i32 28 %shl = shl nuw nsw i32 %conv, 4 29 ret i32 %shl 30 31 32} 33 34; Function Attrs: nounwind readnone 35define signext i32 @foo2(i32 signext %a, i32 signext %b) #0 { 36; CHECK-LABEL: foo2: 37; CHECK: # %bb.0: # %entry 38; CHECK-NEXT: cmpw 3, 4 39; CHECK-NEXT: li 3, 5 40; CHECK-NEXT: li 4, 21 41; CHECK-NEXT: isellt 3, 4, 3 42; CHECK-NEXT: blr 43; 44; CHECK-NO-ISEL-LABEL: foo2: 45; CHECK-NO-ISEL: # %bb.0: # %entry 46; CHECK-NO-ISEL-NEXT: cmpw 3, 4 47; CHECK-NO-ISEL-NEXT: li 3, 21 48; CHECK-NO-ISEL-NEXT: bclr 12, 0, 0 49; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry 50; CHECK-NO-ISEL-NEXT: li 3, 5 51; CHECK-NO-ISEL-NEXT: blr 52entry: 53 %cmp = icmp slt i32 %a, %b 54 %conv = zext i1 %cmp to i32 55 %shl = shl nuw nsw i32 %conv, 4 56 %add1 = or i32 %shl, 5 57 ret i32 %add1 58 59 60} 61 62; Function Attrs: nounwind readnone 63define signext i32 @foo3(i32 signext %a, i32 signext %b) #0 { 64; CHECK-LABEL: foo3: 65; CHECK: # %bb.0: # %entry 66; CHECK-NEXT: cmpw 3, 4 67; CHECK-NEXT: li 3, 16 68; CHECK-NEXT: iselgt 3, 0, 3 69; CHECK-NEXT: blr 70; 71; CHECK-NO-ISEL-LABEL: foo3: 72; CHECK-NO-ISEL: # %bb.0: # %entry 73; CHECK-NO-ISEL-NEXT: cmpw 3, 4 74; CHECK-NO-ISEL-NEXT: li 3, 0 75; CHECK-NO-ISEL-NEXT: bclr 12, 1, 0 76; CHECK-NO-ISEL-NEXT: # %bb.1: # %entry 77; CHECK-NO-ISEL-NEXT: li 3, 16 78; CHECK-NO-ISEL-NEXT: blr 79entry: 80 %cmp = icmp sle i32 %a, %b 81 %conv = zext i1 %cmp to i32 82 %shl = shl nuw nsw i32 %conv, 4 83 ret i32 %shl 84 85 86} 87 88attributes #0 = { nounwind readnone } 89 90