blob: 877da486bcd02af7cd75dfbbf06b1389da915403 [file] [log] [blame]
Ehsan Amiria538b0f2016-08-03 18:17:35 +00001; RUN: llc -verify-machineinstrs -mcpu=pwr7 < %s | FileCheck %s
Tony Jiang8e8c4442017-01-16 20:12:26 +00002; RUN: llc -verify-machineinstrs -mcpu=pwr7 -ppc-gen-isel=false < %s | FileCheck --check-prefix=CHECK-NO-ISEL %s
Hal Finkel200d2ad2015-01-05 21:10:24 +00003target datalayout = "E-m:e-i64:64-n32:64"
4target triple = "powerpc64-unknown-linux-gnu"
5
6; Function Attrs: nounwind readnone
7define signext i32 @foo(i32 signext %a, i32 signext %b) #0 {
8entry:
9 %cmp = icmp slt i32 %a, %b
10 %conv = zext i1 %cmp to i32
11 %shl = shl nuw nsw i32 %conv, 4
12 ret i32 %shl
13
14; CHECK-LABEL: @foo
Tony Jiang8e8c4442017-01-16 20:12:26 +000015; CHECK-NO-ISEL-LABEL: @foo
Hal Finkel200d2ad2015-01-05 21:10:24 +000016; CHECK-DAG: cmpw
17; CHECK-DAG: li [[REG1:[0-9]+]], 0
18; CHECK-DAG: li [[REG2:[0-9]+]], 16
19; CHECK: isel 3, [[REG2]], [[REG1]],
20; CHECK: blr
Tony Jiang8e8c4442017-01-16 20:12:26 +000021
22; CHECK-NO-ISEL: bc 12, 0, [[TRUE:.LBB[0-9]+]]
23; CHECK-NO-ISEL: ori 3, 5, 0
24; CHECK-NO-ISEL-NEXT: blr
25; CHECK-NO-ISEL-NEXT: [[TRUE]]
26; CHECK-NO-ISEL-NEXT: addi 3, 12, 0
27; CHECK-NO-ISEL-NEXT: blr
Hal Finkel200d2ad2015-01-05 21:10:24 +000028}
29
30; Function Attrs: nounwind readnone
31define signext i32 @foo2(i32 signext %a, i32 signext %b) #0 {
32entry:
33 %cmp = icmp slt i32 %a, %b
34 %conv = zext i1 %cmp to i32
35 %shl = shl nuw nsw i32 %conv, 4
36 %add1 = or i32 %shl, 5
37 ret i32 %add1
38
39; CHECK-LABEL: @foo2
Tony Jiang8e8c4442017-01-16 20:12:26 +000040; CHECK-NO-ISEL-LABEL: @foo2
Hal Finkel200d2ad2015-01-05 21:10:24 +000041; CHECK-DAG: cmpw
42; CHECK-DAG: li [[REG1:[0-9]+]], 5
43; CHECK-DAG: li [[REG2:[0-9]+]], 21
44; CHECK: isel 3, [[REG2]], [[REG1]],
45; CHECK: blr
Tony Jiang8e8c4442017-01-16 20:12:26 +000046
47; CHECK-NO-ISEL: bc 12, 0, [[TRUE:.LBB[0-9]+]]
48; CHECK-NO-ISEL: ori 3, 5, 0
49; CHECK-NO-ISEL-NEXT: blr
50; CHECK-NO-ISEL-NEXT: [[TRUE]]
51; CHECK-NO-ISEL-NEXT: addi 3, 12, 0
52; CHECK-NO-ISEL-NEXT: blr
Hal Finkel200d2ad2015-01-05 21:10:24 +000053}
54
55; Function Attrs: nounwind readnone
56define signext i32 @foo3(i32 signext %a, i32 signext %b) #0 {
57entry:
58 %cmp = icmp sle i32 %a, %b
59 %conv = zext i1 %cmp to i32
60 %shl = shl nuw nsw i32 %conv, 4
61 ret i32 %shl
62
63; CHECK-LABEL: @foo3
Tony Jiang8e8c4442017-01-16 20:12:26 +000064; CHECK-NO-ISEL-LABEL: @foo3
Hal Finkel200d2ad2015-01-05 21:10:24 +000065; CHECK-DAG: cmpw
66; CHECK-DAG: li [[REG1:[0-9]+]], 16
67; CHECK: isel 3, 0, [[REG1]],
68; CHECK: blr
Tony Jiang8e8c4442017-01-16 20:12:26 +000069
70; CHECK-NO-ISEL: bc 12, 1, [[TRUE:.LBB[0-9]+]]
71; CHECK-NO-ISEL: ori 3, 5, 0
72; CHECK-NO-ISEL-NEXT: blr
73; CHECK-NO-ISEL-NEXT: [[TRUE]]
74; CHECK-NO-ISEL-NEXT: addi 3, 0, 0
75; CHECK-NO-ISEL-NEXT: blr
Hal Finkel200d2ad2015-01-05 21:10:24 +000076}
77
78attributes #0 = { nounwind readnone }
79