1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; Test i128 maximum on z13.
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
7 define i128 @f1(i128 %val1, i128 %val2) {
10 ; CHECK-NEXT: vl %v1, 0(%r3), 3
11 ; CHECK-NEXT: vl %v0, 0(%r4), 3
12 ; CHECK-NEXT: vecg %v1, %v0
13 ; CHECK-NEXT: je .LBB0_3
14 ; CHECK-NEXT: # %bb.1:
15 ; CHECK-NEXT: jnl .LBB0_4
16 ; CHECK-NEXT: .LBB0_2:
17 ; CHECK-NEXT: vst %v0, 0(%r2), 3
19 ; CHECK-NEXT: .LBB0_3:
20 ; CHECK-NEXT: vchlgs %v2, %v0, %v1
21 ; CHECK-NEXT: jl .LBB0_2
22 ; CHECK-NEXT: .LBB0_4:
23 ; CHECK-NEXT: vlr %v0, %v1
24 ; CHECK-NEXT: vst %v0, 0(%r2), 3
26 %cmp = icmp slt i128 %val1, %val2
27 %ret = select i1 %cmp, i128 %val2, i128 %val1
32 define i128 @f2(i128 %val1, i128 %val2) {
35 ; CHECK-NEXT: vl %v0, 0(%r4), 3
36 ; CHECK-NEXT: vl %v1, 0(%r3), 3
37 ; CHECK-NEXT: vecg %v0, %v1
38 ; CHECK-NEXT: je .LBB1_3
39 ; CHECK-NEXT: # %bb.1:
40 ; CHECK-NEXT: jl .LBB1_4
41 ; CHECK-NEXT: .LBB1_2:
42 ; CHECK-NEXT: vst %v0, 0(%r2), 3
44 ; CHECK-NEXT: .LBB1_3:
45 ; CHECK-NEXT: vchlgs %v2, %v1, %v0
46 ; CHECK-NEXT: jnl .LBB1_2
47 ; CHECK-NEXT: .LBB1_4:
48 ; CHECK-NEXT: vlr %v0, %v1
49 ; CHECK-NEXT: vst %v0, 0(%r2), 3
51 %cmp = icmp sle i128 %val1, %val2
52 %ret = select i1 %cmp, i128 %val2, i128 %val1
57 define i128 @f3(i128 %val1, i128 %val2) {
60 ; CHECK-NEXT: vl %v1, 0(%r4), 3
61 ; CHECK-NEXT: vl %v0, 0(%r3), 3
62 ; CHECK-NEXT: vecg %v1, %v0
63 ; CHECK-NEXT: je .LBB2_3
64 ; CHECK-NEXT: # %bb.1:
65 ; CHECK-NEXT: jnl .LBB2_4
66 ; CHECK-NEXT: .LBB2_2:
67 ; CHECK-NEXT: vst %v0, 0(%r2), 3
69 ; CHECK-NEXT: .LBB2_3:
70 ; CHECK-NEXT: vchlgs %v2, %v0, %v1
71 ; CHECK-NEXT: jl .LBB2_2
72 ; CHECK-NEXT: .LBB2_4:
73 ; CHECK-NEXT: vlr %v0, %v1
74 ; CHECK-NEXT: vst %v0, 0(%r2), 3
76 %cmp = icmp sgt i128 %val1, %val2
77 %ret = select i1 %cmp, i128 %val1, i128 %val2
82 define i128 @f4(i128 %val1, i128 %val2) {
85 ; CHECK-NEXT: vl %v0, 0(%r3), 3
86 ; CHECK-NEXT: vl %v1, 0(%r4), 3
87 ; CHECK-NEXT: vecg %v0, %v1
88 ; CHECK-NEXT: je .LBB3_3
89 ; CHECK-NEXT: # %bb.1:
90 ; CHECK-NEXT: jl .LBB3_4
91 ; CHECK-NEXT: .LBB3_2:
92 ; CHECK-NEXT: vst %v0, 0(%r2), 3
94 ; CHECK-NEXT: .LBB3_3:
95 ; CHECK-NEXT: vchlgs %v2, %v1, %v0
96 ; CHECK-NEXT: jnl .LBB3_2
97 ; CHECK-NEXT: .LBB3_4:
98 ; CHECK-NEXT: vlr %v0, %v1
99 ; CHECK-NEXT: vst %v0, 0(%r2), 3
100 ; CHECK-NEXT: br %r14
101 %cmp = icmp sge i128 %val1, %val2
102 %ret = select i1 %cmp, i128 %val1, i128 %val2
107 define i128 @f5(i128 %val1, i128 %val2) {
110 ; CHECK-NEXT: vl %v1, 0(%r3), 3
111 ; CHECK-NEXT: vl %v0, 0(%r4), 3
112 ; CHECK-NEXT: veclg %v1, %v0
113 ; CHECK-NEXT: je .LBB4_3
114 ; CHECK-NEXT: # %bb.1:
115 ; CHECK-NEXT: jnl .LBB4_4
116 ; CHECK-NEXT: .LBB4_2:
117 ; CHECK-NEXT: vst %v0, 0(%r2), 3
118 ; CHECK-NEXT: br %r14
119 ; CHECK-NEXT: .LBB4_3:
120 ; CHECK-NEXT: vchlgs %v2, %v0, %v1
121 ; CHECK-NEXT: jl .LBB4_2
122 ; CHECK-NEXT: .LBB4_4:
123 ; CHECK-NEXT: vlr %v0, %v1
124 ; CHECK-NEXT: vst %v0, 0(%r2), 3
125 ; CHECK-NEXT: br %r14
126 %cmp = icmp ult i128 %val1, %val2
127 %ret = select i1 %cmp, i128 %val2, i128 %val1
132 define i128 @f6(i128 %val1, i128 %val2) {
135 ; CHECK-NEXT: vl %v0, 0(%r4), 3
136 ; CHECK-NEXT: vl %v1, 0(%r3), 3
137 ; CHECK-NEXT: veclg %v0, %v1
138 ; CHECK-NEXT: je .LBB5_3
139 ; CHECK-NEXT: # %bb.1:
140 ; CHECK-NEXT: jl .LBB5_4
141 ; CHECK-NEXT: .LBB5_2:
142 ; CHECK-NEXT: vst %v0, 0(%r2), 3
143 ; CHECK-NEXT: br %r14
144 ; CHECK-NEXT: .LBB5_3:
145 ; CHECK-NEXT: vchlgs %v2, %v1, %v0
146 ; CHECK-NEXT: jnl .LBB5_2
147 ; CHECK-NEXT: .LBB5_4:
148 ; CHECK-NEXT: vlr %v0, %v1
149 ; CHECK-NEXT: vst %v0, 0(%r2), 3
150 ; CHECK-NEXT: br %r14
151 %cmp = icmp ule i128 %val1, %val2
152 %ret = select i1 %cmp, i128 %val2, i128 %val1
157 define i128 @f7(i128 %val1, i128 %val2) {
160 ; CHECK-NEXT: vl %v1, 0(%r4), 3
161 ; CHECK-NEXT: vl %v0, 0(%r3), 3
162 ; CHECK-NEXT: veclg %v1, %v0
163 ; CHECK-NEXT: je .LBB6_3
164 ; CHECK-NEXT: # %bb.1:
165 ; CHECK-NEXT: jnl .LBB6_4
166 ; CHECK-NEXT: .LBB6_2:
167 ; CHECK-NEXT: vst %v0, 0(%r2), 3
168 ; CHECK-NEXT: br %r14
169 ; CHECK-NEXT: .LBB6_3:
170 ; CHECK-NEXT: vchlgs %v2, %v0, %v1
171 ; CHECK-NEXT: jl .LBB6_2
172 ; CHECK-NEXT: .LBB6_4:
173 ; CHECK-NEXT: vlr %v0, %v1
174 ; CHECK-NEXT: vst %v0, 0(%r2), 3
175 ; CHECK-NEXT: br %r14
176 %cmp = icmp ugt i128 %val1, %val2
177 %ret = select i1 %cmp, i128 %val1, i128 %val2
182 define i128 @f8(i128 %val1, i128 %val2) {
185 ; CHECK-NEXT: vl %v0, 0(%r3), 3
186 ; CHECK-NEXT: vl %v1, 0(%r4), 3
187 ; CHECK-NEXT: veclg %v0, %v1
188 ; CHECK-NEXT: je .LBB7_3
189 ; CHECK-NEXT: # %bb.1:
190 ; CHECK-NEXT: jl .LBB7_4
191 ; CHECK-NEXT: .LBB7_2:
192 ; CHECK-NEXT: vst %v0, 0(%r2), 3
193 ; CHECK-NEXT: br %r14
194 ; CHECK-NEXT: .LBB7_3:
195 ; CHECK-NEXT: vchlgs %v2, %v1, %v0
196 ; CHECK-NEXT: jnl .LBB7_2
197 ; CHECK-NEXT: .LBB7_4:
198 ; CHECK-NEXT: vlr %v0, %v1
199 ; CHECK-NEXT: vst %v0, 0(%r2), 3
200 ; CHECK-NEXT: br %r14
201 %cmp = icmp uge i128 %val1, %val2
202 %ret = select i1 %cmp, i128 %val1, i128 %val2