blob: 6d7897d83e5a2feed753a7bc02324098d88cb506 [file] [log] [blame]
Sanjay Patelbce899f2018-07-05 13:16:46 +00001; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc < %s -mtriple=powerpc64le-- | FileCheck %s
3
4; If positive...
5
6define i32 @zext_ifpos(i32 %x) {
7; CHECK-LABEL: zext_ifpos:
8; CHECK: # %bb.0:
9; CHECK-NEXT: nor 3, 3, 3
10; CHECK-NEXT: srwi 3, 3, 31
11; CHECK-NEXT: blr
12 %c = icmp sgt i32 %x, -1
13 %e = zext i1 %c to i32
14 ret i32 %e
15}
16
17define i32 @add_zext_ifpos(i32 %x) {
18; CHECK-LABEL: add_zext_ifpos:
19; CHECK: # %bb.0:
Sanjay Patela41c8862018-07-15 16:27:07 +000020; CHECK-NEXT: nor 3, 3, 3
Sanjay Patelbce899f2018-07-05 13:16:46 +000021; CHECK-NEXT: srwi 3, 3, 31
Sanjay Patelbce899f2018-07-05 13:16:46 +000022; CHECK-NEXT: addi 3, 3, 41
23; CHECK-NEXT: blr
24 %c = icmp sgt i32 %x, -1
25 %e = zext i1 %c to i32
26 %r = add i32 %e, 41
27 ret i32 %r
28}
29
30define i32 @sel_ifpos_tval_bigger(i32 %x) {
31; CHECK-LABEL: sel_ifpos_tval_bigger:
32; CHECK: # %bb.0:
33; CHECK-NEXT: li 4, 41
34; CHECK-NEXT: cmpwi 0, 3, -1
35; CHECK-NEXT: li 3, 42
36; CHECK-NEXT: isel 3, 3, 4, 1
37; CHECK-NEXT: blr
38 %c = icmp sgt i32 %x, -1
39 %r = select i1 %c, i32 42, i32 41
40 ret i32 %r
41}
42
43define i32 @sext_ifpos(i32 %x) {
44; CHECK-LABEL: sext_ifpos:
45; CHECK: # %bb.0:
46; CHECK-NEXT: nor 3, 3, 3
47; CHECK-NEXT: srawi 3, 3, 31
48; CHECK-NEXT: blr
49 %c = icmp sgt i32 %x, -1
50 %e = sext i1 %c to i32
51 ret i32 %e
52}
53
54define i32 @add_sext_ifpos(i32 %x) {
55; CHECK-LABEL: add_sext_ifpos:
56; CHECK: # %bb.0:
Sanjay Patelbce899f2018-07-05 13:16:46 +000057; CHECK-NEXT: nor 3, 3, 3
Sanjay Patela41c8862018-07-15 16:27:07 +000058; CHECK-NEXT: srawi 3, 3, 31
Sanjay Patelbce899f2018-07-05 13:16:46 +000059; CHECK-NEXT: addi 3, 3, 42
60; CHECK-NEXT: blr
61 %c = icmp sgt i32 %x, -1
62 %e = sext i1 %c to i32
63 %r = add i32 %e, 42
64 ret i32 %r
65}
66
67define i32 @sel_ifpos_fval_bigger(i32 %x) {
68; CHECK-LABEL: sel_ifpos_fval_bigger:
69; CHECK: # %bb.0:
70; CHECK-NEXT: li 4, 42
71; CHECK-NEXT: cmpwi 0, 3, -1
72; CHECK-NEXT: li 3, 41
73; CHECK-NEXT: isel 3, 3, 4, 1
74; CHECK-NEXT: blr
75 %c = icmp sgt i32 %x, -1
76 %r = select i1 %c, i32 41, i32 42
77 ret i32 %r
78}
79
80; If negative...
81
82define i32 @zext_ifneg(i32 %x) {
83; CHECK-LABEL: zext_ifneg:
84; CHECK: # %bb.0:
85; CHECK-NEXT: srwi 3, 3, 31
86; CHECK-NEXT: blr
87 %c = icmp slt i32 %x, 0
88 %r = zext i1 %c to i32
89 ret i32 %r
90}
91
92define i32 @add_zext_ifneg(i32 %x) {
93; CHECK-LABEL: add_zext_ifneg:
94; CHECK: # %bb.0:
95; CHECK-NEXT: srwi 3, 3, 31
96; CHECK-NEXT: addi 3, 3, 41
97; CHECK-NEXT: blr
98 %c = icmp slt i32 %x, 0
99 %e = zext i1 %c to i32
100 %r = add i32 %e, 41
101 ret i32 %r
102}
103
104define i32 @sel_ifneg_tval_bigger(i32 %x) {
105; CHECK-LABEL: sel_ifneg_tval_bigger:
106; CHECK: # %bb.0:
107; CHECK-NEXT: li 4, 41
108; CHECK-NEXT: cmpwi 0, 3, 0
109; CHECK-NEXT: li 3, 42
110; CHECK-NEXT: isel 3, 3, 4, 0
111; CHECK-NEXT: blr
112 %c = icmp slt i32 %x, 0
113 %r = select i1 %c, i32 42, i32 41
114 ret i32 %r
115}
116
117define i32 @sext_ifneg(i32 %x) {
118; CHECK-LABEL: sext_ifneg:
119; CHECK: # %bb.0:
120; CHECK-NEXT: srawi 3, 3, 31
121; CHECK-NEXT: blr
122 %c = icmp slt i32 %x, 0
123 %r = sext i1 %c to i32
124 ret i32 %r
125}
126
127define i32 @add_sext_ifneg(i32 %x) {
128; CHECK-LABEL: add_sext_ifneg:
129; CHECK: # %bb.0:
130; CHECK-NEXT: srawi 3, 3, 31
131; CHECK-NEXT: addi 3, 3, 42
132; CHECK-NEXT: blr
133 %c = icmp slt i32 %x, 0
134 %e = sext i1 %c to i32
135 %r = add i32 %e, 42
136 ret i32 %r
137}
138
139define i32 @sel_ifneg_fval_bigger(i32 %x) {
140; CHECK-LABEL: sel_ifneg_fval_bigger:
141; CHECK: # %bb.0:
142; CHECK-NEXT: li 4, 42
143; CHECK-NEXT: cmpwi 0, 3, 0
144; CHECK-NEXT: li 3, 41
145; CHECK-NEXT: isel 3, 3, 4, 0
146; CHECK-NEXT: blr
147 %c = icmp slt i32 %x, 0
148 %r = select i1 %c, i32 41, i32 42
149 ret i32 %r
150}
151