xref: /llvm-project/llvm/test/CodeGen/SystemZ/int-max-01.ll (revision a65ccc1b9fe740c9f65d9cf2b627de50278aad56)
1*a65ccc1bSUlrich Weigand; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2*a65ccc1bSUlrich Weigand; Test i128 maximum on z13.
3*a65ccc1bSUlrich Weigand;
4*a65ccc1bSUlrich Weigand; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
5*a65ccc1bSUlrich Weigand
6*a65ccc1bSUlrich Weigand; Test with slt.
7*a65ccc1bSUlrich Weiganddefine i128 @f1(i128 %val1, i128 %val2) {
8*a65ccc1bSUlrich Weigand; CHECK-LABEL: f1:
9*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
10*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r3), 3
11*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r4), 3
12*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vecg %v1, %v0
13*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB0_3
14*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
15*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB0_4
16*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB0_2:
17*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
18*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
19*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB0_3:
20*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v0, %v1
21*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB0_2
22*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB0_4:
23*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
24*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
25*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
26*a65ccc1bSUlrich Weigand  %cmp = icmp slt i128 %val1, %val2
27*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val2, i128 %val1
28*a65ccc1bSUlrich Weigand  ret i128 %ret
29*a65ccc1bSUlrich Weigand}
30*a65ccc1bSUlrich Weigand
31*a65ccc1bSUlrich Weigand; Test with sle.
32*a65ccc1bSUlrich Weiganddefine i128 @f2(i128 %val1, i128 %val2) {
33*a65ccc1bSUlrich Weigand; CHECK-LABEL: f2:
34*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
35*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r4), 3
36*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r3), 3
37*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vecg %v0, %v1
38*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB1_3
39*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
40*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB1_4
41*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB1_2:
42*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
43*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
44*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB1_3:
45*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v1, %v0
46*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB1_2
47*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB1_4:
48*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
49*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
50*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
51*a65ccc1bSUlrich Weigand  %cmp = icmp sle i128 %val1, %val2
52*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val2, i128 %val1
53*a65ccc1bSUlrich Weigand  ret i128 %ret
54*a65ccc1bSUlrich Weigand}
55*a65ccc1bSUlrich Weigand
56*a65ccc1bSUlrich Weigand; Test with sgt.
57*a65ccc1bSUlrich Weiganddefine i128 @f3(i128 %val1, i128 %val2) {
58*a65ccc1bSUlrich Weigand; CHECK-LABEL: f3:
59*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
60*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r4), 3
61*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r3), 3
62*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vecg %v1, %v0
63*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB2_3
64*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
65*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB2_4
66*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB2_2:
67*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
68*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
69*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB2_3:
70*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v0, %v1
71*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB2_2
72*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB2_4:
73*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
74*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
75*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
76*a65ccc1bSUlrich Weigand  %cmp = icmp sgt i128 %val1, %val2
77*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val1, i128 %val2
78*a65ccc1bSUlrich Weigand  ret i128 %ret
79*a65ccc1bSUlrich Weigand}
80*a65ccc1bSUlrich Weigand
81*a65ccc1bSUlrich Weigand; Test with sge.
82*a65ccc1bSUlrich Weiganddefine i128 @f4(i128 %val1, i128 %val2) {
83*a65ccc1bSUlrich Weigand; CHECK-LABEL: f4:
84*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
85*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r3), 3
86*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r4), 3
87*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vecg %v0, %v1
88*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB3_3
89*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
90*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB3_4
91*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB3_2:
92*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
93*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
94*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB3_3:
95*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v1, %v0
96*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB3_2
97*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB3_4:
98*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
99*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
100*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
101*a65ccc1bSUlrich Weigand  %cmp = icmp sge i128 %val1, %val2
102*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val1, i128 %val2
103*a65ccc1bSUlrich Weigand  ret i128 %ret
104*a65ccc1bSUlrich Weigand}
105*a65ccc1bSUlrich Weigand
106*a65ccc1bSUlrich Weigand; Test with ult.
107*a65ccc1bSUlrich Weiganddefine i128 @f5(i128 %val1, i128 %val2) {
108*a65ccc1bSUlrich Weigand; CHECK-LABEL: f5:
109*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
110*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r3), 3
111*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r4), 3
112*a65ccc1bSUlrich Weigand; CHECK-NEXT:    veclg %v1, %v0
113*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB4_3
114*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
115*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB4_4
116*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB4_2:
117*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
118*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
119*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB4_3:
120*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v0, %v1
121*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB4_2
122*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB4_4:
123*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
124*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
125*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
126*a65ccc1bSUlrich Weigand  %cmp = icmp ult i128 %val1, %val2
127*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val2, i128 %val1
128*a65ccc1bSUlrich Weigand  ret i128 %ret
129*a65ccc1bSUlrich Weigand}
130*a65ccc1bSUlrich Weigand
131*a65ccc1bSUlrich Weigand; Test with ule.
132*a65ccc1bSUlrich Weiganddefine i128 @f6(i128 %val1, i128 %val2) {
133*a65ccc1bSUlrich Weigand; CHECK-LABEL: f6:
134*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
135*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r4), 3
136*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r3), 3
137*a65ccc1bSUlrich Weigand; CHECK-NEXT:    veclg %v0, %v1
138*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB5_3
139*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
140*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB5_4
141*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB5_2:
142*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
143*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
144*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB5_3:
145*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v1, %v0
146*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB5_2
147*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB5_4:
148*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
149*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
150*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
151*a65ccc1bSUlrich Weigand  %cmp = icmp ule i128 %val1, %val2
152*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val2, i128 %val1
153*a65ccc1bSUlrich Weigand  ret i128 %ret
154*a65ccc1bSUlrich Weigand}
155*a65ccc1bSUlrich Weigand
156*a65ccc1bSUlrich Weigand; Test with ugt.
157*a65ccc1bSUlrich Weiganddefine i128 @f7(i128 %val1, i128 %val2) {
158*a65ccc1bSUlrich Weigand; CHECK-LABEL: f7:
159*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
160*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r4), 3
161*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r3), 3
162*a65ccc1bSUlrich Weigand; CHECK-NEXT:    veclg %v1, %v0
163*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB6_3
164*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
165*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB6_4
166*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB6_2:
167*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
168*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
169*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB6_3:
170*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v0, %v1
171*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB6_2
172*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB6_4:
173*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
174*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
175*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
176*a65ccc1bSUlrich Weigand  %cmp = icmp ugt i128 %val1, %val2
177*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val1, i128 %val2
178*a65ccc1bSUlrich Weigand  ret i128 %ret
179*a65ccc1bSUlrich Weigand}
180*a65ccc1bSUlrich Weigand
181*a65ccc1bSUlrich Weigand; Test with uge.
182*a65ccc1bSUlrich Weiganddefine i128 @f8(i128 %val1, i128 %val2) {
183*a65ccc1bSUlrich Weigand; CHECK-LABEL: f8:
184*a65ccc1bSUlrich Weigand; CHECK:       # %bb.0:
185*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v0, 0(%r3), 3
186*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vl %v1, 0(%r4), 3
187*a65ccc1bSUlrich Weigand; CHECK-NEXT:    veclg %v0, %v1
188*a65ccc1bSUlrich Weigand; CHECK-NEXT:    je .LBB7_3
189*a65ccc1bSUlrich Weigand; CHECK-NEXT:  # %bb.1:
190*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jl .LBB7_4
191*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB7_2:
192*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
193*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
194*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB7_3:
195*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vchlgs %v2, %v1, %v0
196*a65ccc1bSUlrich Weigand; CHECK-NEXT:    jnl .LBB7_2
197*a65ccc1bSUlrich Weigand; CHECK-NEXT:  .LBB7_4:
198*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vlr %v0, %v1
199*a65ccc1bSUlrich Weigand; CHECK-NEXT:    vst %v0, 0(%r2), 3
200*a65ccc1bSUlrich Weigand; CHECK-NEXT:    br %r14
201*a65ccc1bSUlrich Weigand  %cmp = icmp uge i128 %val1, %val2
202*a65ccc1bSUlrich Weigand  %ret = select i1 %cmp, i128 %val1, i128 %val2
203*a65ccc1bSUlrich Weigand  ret i128 %ret
204*a65ccc1bSUlrich Weigand}
205