Skip to content

Commit c15a3dd

Browse files
committed
[SystemZ] Generate test checks (NFC)
1 parent 41a8d9b commit c15a3dd

File tree

2 files changed

+226
-136
lines changed

2 files changed

+226
-136
lines changed

llvm/test/CodeGen/SystemZ/vec-max-05.ll

Lines changed: 113 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
12
; Test vector maximum on z14.
23
;
34
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
@@ -23,36 +24,40 @@ declare fp128 @llvm.maximum.f128(fp128, fp128)
2324
; Test the fmax library function.
2425
define double @f1(double %dummy, double %val1, double %val2) {
2526
; CHECK-LABEL: f1:
26-
; CHECK: wfmaxdb %f0, %f2, %f4, 4
27-
; CHECK: br %r14
27+
; CHECK: # %bb.0:
28+
; CHECK-NEXT: wfmaxdb %f0, %f2, %f4, 4
29+
; CHECK-NEXT: br %r14
2830
%ret = call double @fmax(double %val1, double %val2) readnone
2931
ret double %ret
3032
}
3133

3234
; Test the f64 maxnum intrinsic.
3335
define double @f2(double %dummy, double %val1, double %val2) {
3436
; CHECK-LABEL: f2:
35-
; CHECK: wfmaxdb %f0, %f2, %f4, 4
36-
; CHECK: br %r14
37+
; CHECK: # %bb.0:
38+
; CHECK-NEXT: wfmaxdb %f0, %f2, %f4, 4
39+
; CHECK-NEXT: br %r14
3740
%ret = call double @llvm.maxnum.f64(double %val1, double %val2)
3841
ret double %ret
3942
}
4043

4144
; Test the f64 maximum intrinsic.
4245
define double @f3(double %dummy, double %val1, double %val2) {
4346
; CHECK-LABEL: f3:
44-
; CHECK: wfmaxdb %f0, %f2, %f4, 1
45-
; CHECK: br %r14
47+
; CHECK: # %bb.0:
48+
; CHECK-NEXT: wfmaxdb %f0, %f2, %f4, 1
49+
; CHECK-NEXT: br %r14
4650
%ret = call double @llvm.maximum.f64(double %val1, double %val2)
4751
ret double %ret
4852
}
4953

5054
; Test a f64 constant compare/select resulting in maxnum.
5155
define double @f4(double %dummy, double %val) {
5256
; CHECK-LABEL: f4:
53-
; CHECK: lzdr [[REG:%f[0-9]+]]
54-
; CHECK: wfmaxdb %f0, %f2, [[REG]], 4
55-
; CHECK: br %r14
57+
; CHECK: # %bb.0:
58+
; CHECK-NEXT: lzdr %f0
59+
; CHECK-NEXT: wfmaxdb %f0, %f2, %f0, 4
60+
; CHECK-NEXT: br %r14
5661
%cmp = fcmp ogt double %val, 0.0
5762
%ret = select i1 %cmp, double %val, double 0.0
5863
ret double %ret
@@ -61,79 +66,104 @@ define double @f4(double %dummy, double %val) {
6166
; Test a f64 constant compare/select resulting in maximum.
6267
define double @f5(double %dummy, double %val) {
6368
; CHECK-LABEL: f5:
64-
; CHECK: ltdbr %f1, %f2
65-
; CHECK-NEXT: ldr %f0, %f2
66-
; CHECK: br %r14
69+
; CHECK: # %bb.0:
70+
; CHECK-NEXT: ltdbr %f1, %f2
71+
; CHECK-NEXT: ldr %f0, %f2
72+
; CHECK-NEXT: bnler %r14
73+
; CHECK-NEXT: .LBB4_1:
74+
; CHECK-NEXT: lzdr %f0
75+
; CHECK-NEXT: br %r14
6776
%cmp = fcmp ugt double %val, 0.0
6877
%ret = select i1 %cmp, double %val, double 0.0
6978
ret double %ret
7079
}
7180

7281
; Test the v2f64 maxnum intrinsic.
73-
define <2 x double> @f6(<2 x double> %dummy, <2 x double> %val1,
74-
<2 x double> %val2) {
82+
define <2 x double> @f6(<2 x double> %dummy, <2 x double> %val1, <2 x double> %val2) {
7583
; CHECK-LABEL: f6:
76-
; CHECK: vfmaxdb %v24, %v26, %v28, 4
77-
; CHECK: br %r14
84+
; CHECK: # %bb.0:
85+
; CHECK-NEXT: vfmaxdb %v24, %v26, %v28, 4
86+
; CHECK-NEXT: br %r14
7887
%ret = call <2 x double> @llvm.maxnum.v2f64(<2 x double> %val1, <2 x double> %val2)
7988
ret <2 x double> %ret
8089
}
8190

8291
; Test the v2f64 maximum intrinsic.
83-
define <2 x double> @f7(<2 x double> %dummy, <2 x double> %val1,
84-
<2 x double> %val2) {
92+
define <2 x double> @f7(<2 x double> %dummy, <2 x double> %val1, <2 x double> %val2) {
8593
; CHECK-LABEL: f7:
86-
; CHECK: vfmaxdb %v24, %v26, %v28, 1
87-
; CHECK: br %r14
94+
; CHECK: # %bb.0:
95+
; CHECK-NEXT: vfmaxdb %v24, %v26, %v28, 1
96+
; CHECK-NEXT: br %r14
8897
%ret = call <2 x double> @llvm.maximum.v2f64(<2 x double> %val1, <2 x double> %val2)
8998
ret <2 x double> %ret
9099
}
91100

92101
; Test the fmaxf library function.
93102
define float @f11(float %dummy, float %val1, float %val2) {
94103
; CHECK-LABEL: f11:
95-
; CHECK: wfmaxsb %f0, %f2, %f4, 4
96-
; CHECK: br %r14
104+
; CHECK: # %bb.0:
105+
; CHECK-NEXT: wfmaxsb %f0, %f2, %f4, 4
106+
; CHECK-NEXT: br %r14
97107
%ret = call float @fmaxf(float %val1, float %val2) readnone
98108
ret float %ret
99109
}
100110

101111
; Test the f16 maxnum intrinsic.
102112
define half @f12_half(half %dummy, half %val1, half %val2) {
103113
; CHECK-LABEL: f12_half:
104-
; CHECK: brasl %r14, __extendhfsf2@PLT
105-
; CHECK: brasl %r14, __extendhfsf2@PLT
106-
; CHECK: wfmaxsb %f0, %f0, %f9, 4
107-
; CHECK: brasl %r14, __truncsfhf2@PLT
108-
; CHECK: br %r14
114+
; CHECK: # %bb.0:
115+
; CHECK-NEXT: stmg %r14, %r15, 112(%r15)
116+
; CHECK-NEXT: .cfi_offset %r14, -48
117+
; CHECK-NEXT: .cfi_offset %r15, -40
118+
; CHECK-NEXT: aghi %r15, -176
119+
; CHECK-NEXT: .cfi_def_cfa_offset 336
120+
; CHECK-NEXT: std %f8, 168(%r15) # 8-byte Spill
121+
; CHECK-NEXT: std %f9, 160(%r15) # 8-byte Spill
122+
; CHECK-NEXT: .cfi_offset %f8, -168
123+
; CHECK-NEXT: .cfi_offset %f9, -176
124+
; CHECK-NEXT: ldr %f0, %f4
125+
; CHECK-NEXT: ldr %f8, %f2
126+
; CHECK-NEXT: brasl %r14, __extendhfsf2@PLT
127+
; CHECK-NEXT: ldr %f9, %f0
128+
; CHECK-NEXT: ldr %f0, %f8
129+
; CHECK-NEXT: brasl %r14, __extendhfsf2@PLT
130+
; CHECK-NEXT: wfmaxsb %f0, %f0, %f9, 4
131+
; CHECK-NEXT: brasl %r14, __truncsfhf2@PLT
132+
; CHECK-NEXT: ld %f8, 168(%r15) # 8-byte Reload
133+
; CHECK-NEXT: ld %f9, 160(%r15) # 8-byte Reload
134+
; CHECK-NEXT: lmg %r14, %r15, 288(%r15)
135+
; CHECK-NEXT: br %r14
109136
%ret = call half @llvm.maxnum.f16(half %val1, half %val2)
110137
ret half %ret
111138
}
112139

113140
; Test the f32 maxnum intrinsic.
114141
define float @f12(float %dummy, float %val1, float %val2) {
115142
; CHECK-LABEL: f12:
116-
; CHECK: wfmaxsb %f0, %f2, %f4, 4
117-
; CHECK: br %r14
143+
; CHECK: # %bb.0:
144+
; CHECK-NEXT: wfmaxsb %f0, %f2, %f4, 4
145+
; CHECK-NEXT: br %r14
118146
%ret = call float @llvm.maxnum.f32(float %val1, float %val2)
119147
ret float %ret
120148
}
121149

122150
; Test the f32 maximum intrinsic.
123151
define float @f13(float %dummy, float %val1, float %val2) {
124152
; CHECK-LABEL: f13:
125-
; CHECK: wfmaxsb %f0, %f2, %f4, 1
126-
; CHECK: br %r14
153+
; CHECK: # %bb.0:
154+
; CHECK-NEXT: wfmaxsb %f0, %f2, %f4, 1
155+
; CHECK-NEXT: br %r14
127156
%ret = call float @llvm.maximum.f32(float %val1, float %val2)
128157
ret float %ret
129158
}
130159

131160
; Test a f32 constant compare/select resulting in maxnum.
132161
define float @f14(float %dummy, float %val) {
133162
; CHECK-LABEL: f14:
134-
; CHECK: lzer [[REG:%f[0-9]+]]
135-
; CHECK: wfmaxsb %f0, %f2, [[REG]], 4
136-
; CHECK: br %r14
163+
; CHECK: # %bb.0:
164+
; CHECK-NEXT: lzer %f0
165+
; CHECK-NEXT: wfmaxsb %f0, %f2, %f0, 4
166+
; CHECK-NEXT: br %r14
137167
%cmp = fcmp ogt float %val, 0.0
138168
%ret = select i1 %cmp, float %val, float 0.0
139169
ret float %ret
@@ -142,42 +172,49 @@ define float @f14(float %dummy, float %val) {
142172
; Test a f32 constant compare/select resulting in maximum.
143173
define float @f15(float %dummy, float %val) {
144174
; CHECK-LABEL: f15:
145-
; CHECK: ltebr %f1, %f2
146-
; CHECK: ldr %f0, %f2
147-
; CHECK: br %r14
175+
; CHECK: # %bb.0:
176+
; CHECK-NEXT: ltebr %f1, %f2
177+
; CHECK-NEXT: ldr %f0, %f2
178+
; CHECK-NEXT: bnler %r14
179+
; CHECK-NEXT: .LBB12_1:
180+
; CHECK-NEXT: lzer %f0
181+
; CHECK-NEXT: br %r14
148182
%cmp = fcmp ugt float %val, 0.0
149183
%ret = select i1 %cmp, float %val, float 0.0
150184
ret float %ret
151185
}
152186

153187
; Test the v4f32 maxnum intrinsic.
154188
define <4 x float> @f16(<4 x float> %dummy, <4 x float> %val1,
155-
<4 x float> %val2) {
156189
; CHECK-LABEL: f16:
157-
; CHECK: vfmaxsb %v24, %v26, %v28, 4
158-
; CHECK: br %r14
190+
; CHECK: # %bb.0:
191+
; CHECK-NEXT: vfmaxsb %v24, %v26, %v28, 4
192+
; CHECK-NEXT: br %r14
193+
<4 x float> %val2) {
159194
%ret = call <4 x float> @llvm.maxnum.v4f32(<4 x float> %val1, <4 x float> %val2)
160195
ret <4 x float> %ret
161196
}
162197

163198
; Test the v4f32 maximum intrinsic.
164199
define <4 x float> @f17(<4 x float> %dummy, <4 x float> %val1,
165-
<4 x float> %val2) {
166200
; CHECK-LABEL: f17:
167-
; CHECK: vfmaxsb %v24, %v26, %v28, 1
168-
; CHECK: br %r14
201+
; CHECK: # %bb.0:
202+
; CHECK-NEXT: vfmaxsb %v24, %v26, %v28, 1
203+
; CHECK-NEXT: br %r14
204+
<4 x float> %val2) {
169205
%ret = call <4 x float> @llvm.maximum.v4f32(<4 x float> %val1, <4 x float> %val2)
170206
ret <4 x float> %ret
171207
}
172208

173209
; Test the fmaxl library function.
174210
define void @f21(ptr %ptr1, ptr %ptr2, ptr %dst) {
175211
; CHECK-LABEL: f21:
176-
; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)
177-
; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)
178-
; CHECK: wfmaxxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], 4
179-
; CHECK: vst [[RES]], 0(%r4)
180-
; CHECK: br %r14
212+
; CHECK: # %bb.0:
213+
; CHECK-NEXT: vl %v0, 0(%r2), 3
214+
; CHECK-NEXT: vl %v1, 0(%r3), 3
215+
; CHECK-NEXT: wfmaxxb %v0, %v0, %v1, 4
216+
; CHECK-NEXT: vst %v0, 0(%r4), 3
217+
; CHECK-NEXT: br %r14
181218
%val1 = load fp128, ptr %ptr1
182219
%val2 = load fp128, ptr %ptr2
183220
%res = call fp128 @fmaxl(fp128 %val1, fp128 %val2) readnone
@@ -188,11 +225,12 @@ define void @f21(ptr %ptr1, ptr %ptr2, ptr %dst) {
188225
; Test the f128 maxnum intrinsic.
189226
define void @f22(ptr %ptr1, ptr %ptr2, ptr %dst) {
190227
; CHECK-LABEL: f22:
191-
; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)
192-
; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)
193-
; CHECK: wfmaxxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], 4
194-
; CHECK: vst [[RES]], 0(%r4)
195-
; CHECK: br %r14
228+
; CHECK: # %bb.0:
229+
; CHECK-NEXT: vl %v0, 0(%r2), 3
230+
; CHECK-NEXT: vl %v1, 0(%r3), 3
231+
; CHECK-NEXT: wfmaxxb %v0, %v0, %v1, 4
232+
; CHECK-NEXT: vst %v0, 0(%r4), 3
233+
; CHECK-NEXT: br %r14
196234
%val1 = load fp128, ptr %ptr1
197235
%val2 = load fp128, ptr %ptr2
198236
%res = call fp128 @llvm.maxnum.f128(fp128 %val1, fp128 %val2)
@@ -203,11 +241,12 @@ define void @f22(ptr %ptr1, ptr %ptr2, ptr %dst) {
203241
; Test the f128 maximum intrinsic.
204242
define void @f23(ptr %ptr1, ptr %ptr2, ptr %dst) {
205243
; CHECK-LABEL: f23:
206-
; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)
207-
; CHECK-DAG: vl [[REG2:%v[0-9]+]], 0(%r3)
208-
; CHECK: wfmaxxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], 1
209-
; CHECK: vst [[RES]], 0(%r4)
210-
; CHECK: br %r14
244+
; CHECK: # %bb.0:
245+
; CHECK-NEXT: vl %v0, 0(%r2), 3
246+
; CHECK-NEXT: vl %v1, 0(%r3), 3
247+
; CHECK-NEXT: wfmaxxb %v0, %v0, %v1, 1
248+
; CHECK-NEXT: vst %v0, 0(%r4), 3
249+
; CHECK-NEXT: br %r14
211250
%val1 = load fp128, ptr %ptr1
212251
%val2 = load fp128, ptr %ptr2
213252
%res = call fp128 @llvm.maximum.f128(fp128 %val1, fp128 %val2)
@@ -218,11 +257,12 @@ define void @f23(ptr %ptr1, ptr %ptr2, ptr %dst) {
218257
; Test a f128 constant compare/select resulting in maxnum.
219258
define void @f24(ptr %ptr, ptr %dst) {
220259
; CHECK-LABEL: f24:
221-
; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)
222-
; CHECK-DAG: vzero [[REG2:%v[0-9]+]]
223-
; CHECK: wfmaxxb [[RES:%v[0-9]+]], [[REG1]], [[REG2]], 4
224-
; CHECK: vst [[RES]], 0(%r3)
225-
; CHECK: br %r14
260+
; CHECK: # %bb.0:
261+
; CHECK-NEXT: vl %v0, 0(%r2), 3
262+
; CHECK-NEXT: vzero %v1
263+
; CHECK-NEXT: wfmaxxb %v0, %v0, %v1, 4
264+
; CHECK-NEXT: vst %v0, 0(%r3), 3
265+
; CHECK-NEXT: br %r14
226266
%val = load fp128, ptr %ptr
227267
%cmp = fcmp ogt fp128 %val, 0xL00000000000000000000000000000000
228268
%res = select i1 %cmp, fp128 %val, fp128 0xL00000000000000000000000000000000
@@ -233,11 +273,16 @@ define void @f24(ptr %ptr, ptr %dst) {
233273
; Test a f128 constant compare/select resulting in maximum.
234274
define void @f25(ptr %ptr, ptr %dst) {
235275
; CHECK-LABEL: f25:
236-
; CHECK-DAG: vl [[REG1:%v[0-9]+]], 0(%r2)
237-
; CHECK-DAG: vzero [[REG2:%v[0-9]+]]
238-
; CHECK: wfcxb [[REG1]], [[REG2]]
239-
; CHECK: vst [[RES]], 0(%r3)
240-
; CHECK: br %r14
276+
; CHECK: # %bb.0:
277+
; CHECK-NEXT: vl %v0, 0(%r2), 3
278+
; CHECK-NEXT: vzero %v1
279+
; CHECK-NEXT: wfcxb %v0, %v1
280+
; CHECK-NEXT: jnle .LBB19_2
281+
; CHECK-NEXT: # %bb.1:
282+
; CHECK-NEXT: vzero %v0
283+
; CHECK-NEXT: .LBB19_2:
284+
; CHECK-NEXT: vst %v0, 0(%r3), 3
285+
; CHECK-NEXT: br %r14
241286
%val = load fp128, ptr %ptr
242287
%cmp = fcmp ugt fp128 %val, 0xL00000000000000000000000000000000
243288
%res = select i1 %cmp, fp128 %val, fp128 0xL00000000000000000000000000000000

0 commit comments

Comments
 (0)