1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -ppc-asm-full-reg-names -verify-machineinstrs \
3; RUN:   -mtriple=powerpc64le-linux-gnu < %s | FileCheck \
4; RUN:   -check-prefix=CHECK-LE %s
5
6define i64 @f0(i64 %x) {
7; CHECK-LE-LABEL: f0:
8; CHECK-LE:       # %bb.0:
9; CHECK-LE-NEXT:    li r4, 125
10; CHECK-LE-NEXT:    cmpdi r3, 0
11; CHECK-LE-NEXT:    li r3, -3
12; CHECK-LE-NEXT:    isellt r3, r3, r4
13; CHECK-LE-NEXT:    blr
14  %c = icmp slt i64 %x, 0
15  %r = select i1 %c, i64 -3, i64 125
16  ret i64 %r
17}
18
19define i64 @f1(i64 %x) {
20; CHECK-LE-LABEL: f1:
21; CHECK-LE:       # %bb.0:
22; CHECK-LE-NEXT:    li r4, 512
23; CHECK-LE-NEXT:    cmpdi r3, 0
24; CHECK-LE-NEXT:    li r3, 64
25; CHECK-LE-NEXT:    isellt r3, r3, r4
26; CHECK-LE-NEXT:    blr
27  %c = icmp slt i64 %x, 0
28  %r = select i1 %c, i64 64, i64 512
29  ret i64 %r
30}
31
32define i64 @f2(i64 %x) {
33; CHECK-LE-LABEL: f2:
34; CHECK-LE:       # %bb.0:
35; CHECK-LE-NEXT:    li r4, 1024
36; CHECK-LE-NEXT:    cmpdi r3, 0
37; CHECK-LE-NEXT:    iseleq r3, 0, r4
38; CHECK-LE-NEXT:    blr
39  %c = icmp eq i64 %x, 0
40  %r = select i1 %c, i64 0, i64 1024
41  ret i64 %r
42}
43
44define i64 @f3(i64 %x, i64 %y) {
45; CHECK-LE-LABEL: f3:
46; CHECK-LE:       # %bb.0:
47; CHECK-LE-NEXT:    cmpldi r3, 0
48; CHECK-LE-NEXT:    iseleq r3, 0, r4
49; CHECK-LE-NEXT:    blr
50  %c = icmp eq i64 %x, 0
51  %r = select i1 %c, i64 0, i64 %y
52  ret i64 %r
53}
54
55define i64 @f4(i64 %x) {
56; CHECK-LE-LABEL: f4:
57; CHECK-LE:       # %bb.0:
58; CHECK-LE-NEXT:    neg r4, r3
59; CHECK-LE-NEXT:    cmpdi r3, 0
60; CHECK-LE-NEXT:    iselgt r3, r4, r3
61; CHECK-LE-NEXT:    blr
62  %c = icmp sgt i64 %x, 0
63  %x.neg = sub i64 0, %x
64  %r = select i1 %c, i64 %x.neg, i64 %x
65  ret i64 %r
66}
67