1 # RUN: llc -mtriple=s390x-linux-gnu -mcpu=z14 -start-before=greedy %s -o - \
4 # Test folding of a memory operand into an fp memory instruction.
7 define void @fun0(double %arg0, double %arg1, ptr %Dst) { ret void }
8 define void @fun1(double %arg0, double %arg1, ptr %Dst) { ret void }
9 define void @fun2(double %arg0, double %arg1, ptr %Dst) { ret void }
10 define void @fun3(float %arg0, float %arg1, ptr %Dst) { ret void }
11 define void @fun4(float %arg0, float %arg1, ptr %Dst) { ret void }
12 define void @fun5(float %arg0, float %arg1, ptr %Dst) { ret void }
13 define void @fun6(double %arg0, double %arg1, ptr %Dst) { ret void }
14 define void @fun7(double %arg0, double %arg1, ptr %Dst) { ret void }
15 define void @fun8(double %arg0, double %arg1, ptr %Dst) { ret void }
16 define void @fun9(float %arg0, float %arg1, ptr %Dst) { ret void }
17 define void @fun10(float %arg0, float %arg1, ptr %Dst) { ret void }
18 define void @fun11(float %arg0, float %arg1, ptr %Dst) { ret void }
19 define void @fun12(float %arg0, float %arg1, ptr %Dst) { ret void }
24 # CHECK: cdb %f0, 160(%r15) # 8-byte Folded Reload
28 tracksRegLiveness: true
30 - { id: 0, class: fp64bit }
31 - { id: 1, class: fp64bit }
32 - { id: 2, class: addr64bit }
33 - { id: 3, class: vr64bit }
34 - { id: 4, class: gr64bit }
36 - { reg: '$f0d', virtual-reg: '%0' }
37 - { reg: '$f2d', virtual-reg: '%1' }
38 - { reg: '$r2d', virtual-reg: '%2' }
41 machineFunctionInfo: {}
44 liveins: $f0d, $f2d, $r2d
46 %2:addr64bit = COPY $r2d
47 %1:fp64bit = COPY $f2d
48 %0:fp64bit = COPY $f0d
49 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
50 nofpexcept WFCDB %0, %1, implicit-def $cc, implicit $fpc
52 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
53 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
60 # CHECK: cdb %f0, 160(%r15) # 8-byte Folded Reload
64 tracksRegLiveness: true
66 - { id: 0, class: fp64bit }
67 - { id: 1, class: fp64bit }
68 - { id: 2, class: addr64bit }
69 - { id: 3, class: vr64bit }
70 - { id: 4, class: gr64bit }
72 - { reg: '$f0d', virtual-reg: '%0' }
73 - { reg: '$f2d', virtual-reg: '%1' }
74 - { reg: '$r2d', virtual-reg: '%2' }
77 machineFunctionInfo: {}
80 liveins: $f0d, $f2d, $r2d
82 %2:addr64bit = COPY $r2d
83 %1:fp64bit = COPY $f2d
84 %0:fp64bit = COPY $f0d
85 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
86 nofpexcept WFCDB %1, %0, implicit-def $cc, implicit $fpc
88 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
89 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
95 # CDB can't be used if one operand is a VR64 (and not FP64).
97 # CHECK: ld %f0, 160(%r15) # 8-byte Folded Reload
98 # CHECK-NEXT: wfcdb %v16, %f0
102 tracksRegLiveness: true
104 - { id: 0, class: fp64bit }
105 - { id: 1, class: vr64bit }
106 - { id: 2, class: addr64bit }
107 - { id: 3, class: vr64bit }
108 - { id: 4, class: gr64bit }
110 - { reg: '$f0d', virtual-reg: '%0' }
111 - { reg: '$f2d', virtual-reg: '%1' }
112 - { reg: '$r2d', virtual-reg: '%2' }
115 machineFunctionInfo: {}
118 liveins: $f0d, $f2d, $r2d
120 %2:addr64bit = COPY $r2d
121 %1:vr64bit = COPY $f2d
122 %0:fp64bit = COPY $f0d
123 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f0d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
124 nofpexcept WFCDB %1, %0, implicit-def $cc, implicit $fpc
126 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
127 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
134 # CHECK: ceb %f0, 164(%r15) # 4-byte Folded Reload
138 tracksRegLiveness: true
140 - { id: 0, class: fp32bit }
141 - { id: 1, class: fp32bit }
142 - { id: 2, class: addr64bit }
143 - { id: 3, class: vr32bit }
144 - { id: 4, class: gr64bit }
146 - { reg: '$f0s', virtual-reg: '%0' }
147 - { reg: '$f2s', virtual-reg: '%1' }
148 - { reg: '$r2d', virtual-reg: '%2' }
151 machineFunctionInfo: {}
154 liveins: $f0s, $f2s, $r2d
156 %2:addr64bit = COPY $r2d
157 %1:fp32bit = COPY $f2s
158 %0:fp32bit = COPY $f0s
159 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
160 nofpexcept WFCSB %0, %1, implicit-def $cc, implicit $fpc
162 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
163 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
170 # CHECK: ceb %f0, 164(%r15) # 4-byte Folded Reload
174 tracksRegLiveness: true
176 - { id: 0, class: fp32bit }
177 - { id: 1, class: fp32bit }
178 - { id: 2, class: addr64bit }
179 - { id: 3, class: vr32bit }
180 - { id: 4, class: gr64bit }
182 - { reg: '$f0s', virtual-reg: '%0' }
183 - { reg: '$f2s', virtual-reg: '%1' }
184 - { reg: '$r2d', virtual-reg: '%2' }
187 machineFunctionInfo: {}
190 liveins: $f0s, $f2s, $r2d
192 %2:addr64bit = COPY $r2d
193 %1:fp32bit = COPY $f2s
194 %0:fp32bit = COPY $f0s
195 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
196 nofpexcept WFCSB %1, %0, implicit-def $cc, implicit $fpc
198 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
199 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
205 # CEB can't be used if one operand is a VR32 (and not FP32).
207 # CHECK: lde %f0, 164(%r15) # 4-byte Folded Reload
208 # CHECK-NEXT: wfcsb %v16, %f0
212 tracksRegLiveness: true
214 - { id: 0, class: fp32bit }
215 - { id: 1, class: vr32bit }
216 - { id: 2, class: addr64bit }
217 - { id: 3, class: vr32bit }
218 - { id: 4, class: gr64bit }
220 - { reg: '$f0s', virtual-reg: '%0' }
221 - { reg: '$f2s', virtual-reg: '%1' }
222 - { reg: '$r2d', virtual-reg: '%2' }
225 machineFunctionInfo: {}
228 liveins: $f0s, $f2s, $r2d
230 %2:addr64bit = COPY $r2d
231 %1:vr32bit = COPY $f2s
232 %0:fp32bit = COPY $f0s
233 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f0d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
234 nofpexcept WFCSB %1, %0, implicit-def $cc, implicit $fpc
236 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
237 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
244 # CHECK: kdb %f0, 160(%r15) # 8-byte Folded Reload
248 tracksRegLiveness: true
250 - { id: 0, class: fp64bit }
251 - { id: 1, class: fp64bit }
252 - { id: 2, class: addr64bit }
253 - { id: 3, class: vr64bit }
254 - { id: 4, class: gr64bit }
256 - { reg: '$f0d', virtual-reg: '%0' }
257 - { reg: '$f2d', virtual-reg: '%1' }
258 - { reg: '$r2d', virtual-reg: '%2' }
261 machineFunctionInfo: {}
264 liveins: $f0d, $f2d, $r2d
266 %2:addr64bit = COPY $r2d
267 %1:fp64bit = COPY $f2d
268 %0:fp64bit = COPY $f0d
269 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
270 nofpexcept WFKDB %0, %1, implicit-def $cc, implicit $fpc
272 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
273 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
280 # CHECK: kdb %f0, 160(%r15) # 8-byte Folded Reload
284 tracksRegLiveness: true
286 - { id: 0, class: fp64bit }
287 - { id: 1, class: fp64bit }
288 - { id: 2, class: addr64bit }
289 - { id: 3, class: vr64bit }
290 - { id: 4, class: gr64bit }
292 - { reg: '$f0d', virtual-reg: '%0' }
293 - { reg: '$f2d', virtual-reg: '%1' }
294 - { reg: '$r2d', virtual-reg: '%2' }
297 machineFunctionInfo: {}
300 liveins: $f0d, $f2d, $r2d
302 %2:addr64bit = COPY $r2d
303 %1:fp64bit = COPY $f2d
304 %0:fp64bit = COPY $f0d
305 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
306 nofpexcept WFKDB %1, %0, implicit-def $cc, implicit $fpc
308 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
309 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
315 # KDB can't be used if one operand is a VR64 (and not FP64).
317 # CHECK: ld %f0, 160(%r15) # 8-byte Folded Reload
318 # CHECK-NEXT: wfkdb %v16, %f0
322 tracksRegLiveness: true
324 - { id: 0, class: fp64bit }
325 - { id: 1, class: vr64bit }
326 - { id: 2, class: addr64bit }
327 - { id: 3, class: vr64bit }
328 - { id: 4, class: gr64bit }
330 - { reg: '$f0d', virtual-reg: '%0' }
331 - { reg: '$f2d', virtual-reg: '%1' }
332 - { reg: '$r2d', virtual-reg: '%2' }
335 machineFunctionInfo: {}
338 liveins: $f0d, $f2d, $r2d
340 %2:addr64bit = COPY $r2d
341 %1:vr64bit = COPY $f2d
342 %0:fp64bit = COPY $f0d
343 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f0d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
344 nofpexcept WFKDB %1, %0, implicit-def $cc, implicit $fpc
346 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
347 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
354 # CHECK: keb %f0, 164(%r15) # 4-byte Folded Reload
358 tracksRegLiveness: true
360 - { id: 0, class: fp32bit }
361 - { id: 1, class: fp32bit }
362 - { id: 2, class: addr64bit }
363 - { id: 3, class: vr32bit }
364 - { id: 4, class: gr64bit }
366 - { reg: '$f0s', virtual-reg: '%0' }
367 - { reg: '$f2s', virtual-reg: '%1' }
368 - { reg: '$r2d', virtual-reg: '%2' }
371 machineFunctionInfo: {}
374 liveins: $f0s, $f2s, $r2d
376 %2:addr64bit = COPY $r2d
377 %1:fp32bit = COPY $f2s
378 %0:fp32bit = COPY $f0s
379 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
380 nofpexcept WFKSB %0, %1, implicit-def $cc, implicit $fpc
382 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
383 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
389 # CHECK-LABEL: fun10:
390 # CHECK: keb %f0, 164(%r15) # 4-byte Folded Reload
394 tracksRegLiveness: true
396 - { id: 0, class: fp32bit }
397 - { id: 1, class: fp32bit }
398 - { id: 2, class: addr64bit }
399 - { id: 3, class: vr32bit }
400 - { id: 4, class: gr64bit }
402 - { reg: '$f0s', virtual-reg: '%0' }
403 - { reg: '$f2s', virtual-reg: '%1' }
404 - { reg: '$r2d', virtual-reg: '%2' }
407 machineFunctionInfo: {}
410 liveins: $f0s, $f2s, $r2d
412 %2:addr64bit = COPY $r2d
413 %1:fp32bit = COPY $f2s
414 %0:fp32bit = COPY $f0s
415 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
416 nofpexcept WFKSB %1, %0, implicit-def $cc, implicit $fpc
418 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
419 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
425 # CEB can't be used if one operand is a VR32 (and not FP32).
426 # CHECK-LABEL: fun11:
427 # CHECK: lde %f0, 164(%r15) # 4-byte Folded Reload
428 # CHECK-NEXT: wfksb %v16, %f0
432 tracksRegLiveness: true
434 - { id: 0, class: fp32bit }
435 - { id: 1, class: vr32bit }
436 - { id: 2, class: addr64bit }
437 - { id: 3, class: vr32bit }
438 - { id: 4, class: gr64bit }
440 - { reg: '$f0s', virtual-reg: '%0' }
441 - { reg: '$f2s', virtual-reg: '%1' }
442 - { reg: '$r2d', virtual-reg: '%2' }
445 machineFunctionInfo: {}
448 liveins: $f0s, $f2s, $r2d
450 %2:addr64bit = COPY $r2d
451 %1:vr32bit = COPY $f2s
452 %0:fp32bit = COPY $f0s
453 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f0d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
454 nofpexcept WFKSB %1, %0, implicit-def $cc, implicit $fpc
456 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
457 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)
463 # This test case involves a 128 bit operand (VGMF generating float 1.0).
464 # CHECK-LABEL: fun12:
465 # CHECK: vgmf %v0, 2, 8
466 # CHECK-NEXT: ceb %f0, 164(%r15) # 4-byte Folded Reload
470 tracksRegLiveness: true
472 - { id: 0, class: fp32bit }
473 - { id: 1, class: vr128bit }
474 - { id: 2, class: addr64bit }
475 - { id: 3, class: vr32bit }
476 - { id: 4, class: gr64bit }
478 - { reg: '$f0s', virtual-reg: '%0' }
479 - { reg: '$f2s', virtual-reg: '%1' }
480 - { reg: '$r2d', virtual-reg: '%2' }
483 machineFunctionInfo: {}
486 liveins: $f0s, $f2s, $r2d
488 %2:addr64bit = COPY $r2d
489 %0:fp32bit = COPY $f0s
490 INLINEASM &"", 1, 12, implicit-def dead early-clobber $r0d, 12, implicit-def dead early-clobber $r1d, 12, implicit-def dead early-clobber $r2d, 12, implicit-def dead early-clobber $r3d, 12, implicit-def dead early-clobber $r4d, 12, implicit-def dead early-clobber $r5d, 12, implicit-def dead early-clobber $r6d, 12, implicit-def dead early-clobber $r7d, 12, implicit-def dead early-clobber $r8d, 12, implicit-def dead early-clobber $r9d, 12, implicit-def dead early-clobber $r10d, 12, implicit-def dead early-clobber $r11d, 12, implicit-def dead early-clobber $r12d, 12, implicit-def dead early-clobber $r13d, 12, implicit-def dead early-clobber $r14d, 12, implicit-def dead early-clobber $f0d, 12, implicit-def dead early-clobber $f1d, 12, implicit-def dead early-clobber $f2d, 12, implicit-def dead early-clobber $f3d, 12, implicit-def dead early-clobber $f4d, 12, implicit-def dead early-clobber $f5d, 12, implicit-def dead early-clobber $f6d, 12, implicit-def dead early-clobber $f7d, 12, implicit-def dead early-clobber $f8d, 12, implicit-def dead early-clobber $f9d, 12, implicit-def dead early-clobber $f10d, 12, implicit-def dead early-clobber $f11d, 12, implicit-def dead early-clobber $f12d, 12, implicit-def dead early-clobber $f13d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f14d, 12, implicit-def dead early-clobber $f15d
491 %1:vr128bit = VGMF 2, 8
492 nofpexcept WFCSB %0, %1.subreg_h32:vr128bit, implicit-def $cc, implicit $fpc
494 %4:gr64bit = LOCGHI %4, 1, 15, 8, implicit killed $cc
495 STG %4, %2, 0, $noreg :: (store (s64) into %ir.Dst)