[RISCV][VLOPT] Add vector narrowing integer right shift instructions to isSupportedIn...
[llvm-project.git] / llvm / test / CodeGen / AArch64 / zero-call-used-regs.ll
blob4799ea3bcd19f67ed48b827a0f113ef7a3341c22
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-unknown-unknown | FileCheck %s --check-prefixes=CHECK,DEFAULT
3 ; RUN: llc < %s -verify-machineinstrs -mtriple=aarch64-unknown-unknown -mattr=+sve | FileCheck %s --check-prefixes=CHECK,SVE-OR-SME
4 ; RUN: llc -mattr=+sme -force-streaming  < %s | FileCheck %s --check-prefixes=CHECK,SVE-OR-SME
5 ; RUN: llc -force-streaming-compatible < %s | FileCheck %s --check-prefixes=CHECK,STREAMING-COMPAT
7 target triple = "aarch64-unknown-linux-gnu"
9 @result = dso_local global i32 0, align 4
11 define dso_local i32 @skip(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 "zero-call-used-regs"="skip" {
12 ; CHECK-LABEL: skip:
13 ; CHECK:       // %bb.0: // %entry
14 ; CHECK-NEXT:    mul w8, w1, w0
15 ; CHECK-NEXT:    orr w0, w8, w2
16 ; CHECK-NEXT:    ret
18 entry:
19   %mul = mul nsw i32 %b, %a
20   %or = or i32 %mul, %c
21   ret i32 %or
24 define dso_local i32 @used_gpr_arg(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used-gpr-arg" {
25 ; CHECK-LABEL: used_gpr_arg:
26 ; CHECK:       // %bb.0: // %entry
27 ; CHECK-NEXT:    mul w8, w1, w0
28 ; CHECK-NEXT:    orr w0, w8, w2
29 ; CHECK-NEXT:    mov x1, #0 // =0x0
30 ; CHECK-NEXT:    mov x2, #0 // =0x0
31 ; CHECK-NEXT:    ret
33 entry:
34   %mul = mul nsw i32 %b, %a
35   %or = or i32 %mul, %c
36   ret i32 %or
39 define dso_local i32 @used_gpr(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used-gpr" {
40 ; CHECK-LABEL: used_gpr:
41 ; CHECK:       // %bb.0: // %entry
42 ; CHECK-NEXT:    mul w8, w1, w0
43 ; CHECK-NEXT:    orr w0, w8, w2
44 ; CHECK-NEXT:    mov x1, #0 // =0x0
45 ; CHECK-NEXT:    mov x2, #0 // =0x0
46 ; CHECK-NEXT:    mov x8, #0 // =0x0
47 ; CHECK-NEXT:    ret
49 entry:
50   %mul = mul nsw i32 %b, %a
51   %or = or i32 %mul, %c
52   ret i32 %or
55 define dso_local i32 @used_arg(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used-arg" {
56 ; CHECK-LABEL: used_arg:
57 ; CHECK:       // %bb.0: // %entry
58 ; CHECK-NEXT:    mul w8, w1, w0
59 ; CHECK-NEXT:    orr w0, w8, w2
60 ; CHECK-NEXT:    mov x1, #0 // =0x0
61 ; CHECK-NEXT:    mov x2, #0 // =0x0
62 ; CHECK-NEXT:    ret
64 entry:
65   %mul = mul nsw i32 %b, %a
66   %or = or i32 %mul, %c
67   ret i32 %or
70 define dso_local i32 @used(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used" {
71 ; CHECK-LABEL: used:
72 ; CHECK:       // %bb.0: // %entry
73 ; CHECK-NEXT:    mul w8, w1, w0
74 ; CHECK-NEXT:    orr w0, w8, w2
75 ; CHECK-NEXT:    mov x1, #0 // =0x0
76 ; CHECK-NEXT:    mov x2, #0 // =0x0
77 ; CHECK-NEXT:    mov x8, #0 // =0x0
78 ; CHECK-NEXT:    ret
80 entry:
81   %mul = mul nsw i32 %b, %a
82   %or = or i32 %mul, %c
83   ret i32 %or
86 define dso_local i32 @all_gpr_arg(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 "zero-call-used-regs"="all-gpr-arg" {
87 ; CHECK-LABEL: all_gpr_arg:
88 ; CHECK:       // %bb.0: // %entry
89 ; CHECK-NEXT:    mul w8, w1, w0
90 ; CHECK-NEXT:    mov x1, #0 // =0x0
91 ; CHECK-NEXT:    mov x3, #0 // =0x0
92 ; CHECK-NEXT:    mov x4, #0 // =0x0
93 ; CHECK-NEXT:    mov x5, #0 // =0x0
94 ; CHECK-NEXT:    mov x6, #0 // =0x0
95 ; CHECK-NEXT:    mov x7, #0 // =0x0
96 ; CHECK-NEXT:    mov x18, #0 // =0x0
97 ; CHECK-NEXT:    orr w0, w8, w2
98 ; CHECK-NEXT:    mov x2, #0 // =0x0
99 ; CHECK-NEXT:    mov x8, #0 // =0x0
100 ; CHECK-NEXT:    ret
102 entry:
103   %mul = mul nsw i32 %b, %a
104   %or = or i32 %mul, %c
105   ret i32 %or
108 define dso_local i32 @all_gpr(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 "zero-call-used-regs"="all-gpr" {
109 ; CHECK-LABEL: all_gpr:
110 ; CHECK:       // %bb.0: // %entry
111 ; CHECK-NEXT:    mul w8, w1, w0
112 ; CHECK-NEXT:    mov x1, #0 // =0x0
113 ; CHECK-NEXT:    mov x3, #0 // =0x0
114 ; CHECK-NEXT:    mov x4, #0 // =0x0
115 ; CHECK-NEXT:    mov x5, #0 // =0x0
116 ; CHECK-NEXT:    mov x6, #0 // =0x0
117 ; CHECK-NEXT:    mov x7, #0 // =0x0
118 ; CHECK-NEXT:    mov x9, #0 // =0x0
119 ; CHECK-NEXT:    mov x10, #0 // =0x0
120 ; CHECK-NEXT:    orr w0, w8, w2
121 ; CHECK-NEXT:    mov x2, #0 // =0x0
122 ; CHECK-NEXT:    mov x8, #0 // =0x0
123 ; CHECK-NEXT:    mov x11, #0 // =0x0
124 ; CHECK-NEXT:    mov x12, #0 // =0x0
125 ; CHECK-NEXT:    mov x13, #0 // =0x0
126 ; CHECK-NEXT:    mov x14, #0 // =0x0
127 ; CHECK-NEXT:    mov x15, #0 // =0x0
128 ; CHECK-NEXT:    mov x16, #0 // =0x0
129 ; CHECK-NEXT:    mov x17, #0 // =0x0
130 ; CHECK-NEXT:    mov x18, #0 // =0x0
131 ; CHECK-NEXT:    ret
133 entry:
134   %mul = mul nsw i32 %b, %a
135   %or = or i32 %mul, %c
136   ret i32 %or
139 define dso_local i32 @all_arg(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 "zero-call-used-regs"="all-arg" {
140 ; DEFAULT-LABEL: all_arg:
141 ; DEFAULT:       // %bb.0: // %entry
142 ; DEFAULT-NEXT:    mul w8, w1, w0
143 ; DEFAULT-NEXT:    mov x1, #0 // =0x0
144 ; DEFAULT-NEXT:    mov x3, #0 // =0x0
145 ; DEFAULT-NEXT:    mov x4, #0 // =0x0
146 ; DEFAULT-NEXT:    mov x5, #0 // =0x0
147 ; DEFAULT-NEXT:    mov x6, #0 // =0x0
148 ; DEFAULT-NEXT:    mov x7, #0 // =0x0
149 ; DEFAULT-NEXT:    mov x18, #0 // =0x0
150 ; DEFAULT-NEXT:    movi v0.2d, #0000000000000000
151 ; DEFAULT-NEXT:    orr w0, w8, w2
152 ; DEFAULT-NEXT:    mov x2, #0 // =0x0
153 ; DEFAULT-NEXT:    mov x8, #0 // =0x0
154 ; DEFAULT-NEXT:    movi v1.2d, #0000000000000000
155 ; DEFAULT-NEXT:    movi v2.2d, #0000000000000000
156 ; DEFAULT-NEXT:    movi v3.2d, #0000000000000000
157 ; DEFAULT-NEXT:    movi v4.2d, #0000000000000000
158 ; DEFAULT-NEXT:    movi v5.2d, #0000000000000000
159 ; DEFAULT-NEXT:    movi v6.2d, #0000000000000000
160 ; DEFAULT-NEXT:    movi v7.2d, #0000000000000000
161 ; DEFAULT-NEXT:    ret
163 ; SVE-OR-SME-LABEL: all_arg:
164 ; SVE-OR-SME:       // %bb.0: // %entry
165 ; SVE-OR-SME-NEXT:    mul w8, w1, w0
166 ; SVE-OR-SME-NEXT:    mov x1, #0 // =0x0
167 ; SVE-OR-SME-NEXT:    mov x3, #0 // =0x0
168 ; SVE-OR-SME-NEXT:    mov x4, #0 // =0x0
169 ; SVE-OR-SME-NEXT:    mov x5, #0 // =0x0
170 ; SVE-OR-SME-NEXT:    mov x6, #0 // =0x0
171 ; SVE-OR-SME-NEXT:    mov x7, #0 // =0x0
172 ; SVE-OR-SME-NEXT:    mov x18, #0 // =0x0
173 ; SVE-OR-SME-NEXT:    mov z0.d, #0 // =0x0
174 ; SVE-OR-SME-NEXT:    orr w0, w8, w2
175 ; SVE-OR-SME-NEXT:    mov x2, #0 // =0x0
176 ; SVE-OR-SME-NEXT:    mov x8, #0 // =0x0
177 ; SVE-OR-SME-NEXT:    mov z1.d, #0 // =0x0
178 ; SVE-OR-SME-NEXT:    mov z2.d, #0 // =0x0
179 ; SVE-OR-SME-NEXT:    mov z3.d, #0 // =0x0
180 ; SVE-OR-SME-NEXT:    mov z4.d, #0 // =0x0
181 ; SVE-OR-SME-NEXT:    mov z5.d, #0 // =0x0
182 ; SVE-OR-SME-NEXT:    mov z6.d, #0 // =0x0
183 ; SVE-OR-SME-NEXT:    mov z7.d, #0 // =0x0
184 ; SVE-OR-SME-NEXT:    pfalse p0.b
185 ; SVE-OR-SME-NEXT:    pfalse p1.b
186 ; SVE-OR-SME-NEXT:    pfalse p2.b
187 ; SVE-OR-SME-NEXT:    pfalse p3.b
188 ; SVE-OR-SME-NEXT:    ret
190 ; STREAMING-COMPAT-LABEL: all_arg:
191 ; STREAMING-COMPAT:       // %bb.0: // %entry
192 ; STREAMING-COMPAT-NEXT:    mul w8, w1, w0
193 ; STREAMING-COMPAT-NEXT:    mov x1, #0 // =0x0
194 ; STREAMING-COMPAT-NEXT:    mov x3, #0 // =0x0
195 ; STREAMING-COMPAT-NEXT:    mov x4, #0 // =0x0
196 ; STREAMING-COMPAT-NEXT:    mov x5, #0 // =0x0
197 ; STREAMING-COMPAT-NEXT:    mov x6, #0 // =0x0
198 ; STREAMING-COMPAT-NEXT:    mov x7, #0 // =0x0
199 ; STREAMING-COMPAT-NEXT:    mov x18, #0 // =0x0
200 ; STREAMING-COMPAT-NEXT:    fmov d0, xzr
201 ; STREAMING-COMPAT-NEXT:    orr w0, w8, w2
202 ; STREAMING-COMPAT-NEXT:    mov x2, #0 // =0x0
203 ; STREAMING-COMPAT-NEXT:    mov x8, #0 // =0x0
204 ; STREAMING-COMPAT-NEXT:    fmov d1, xzr
205 ; STREAMING-COMPAT-NEXT:    fmov d2, xzr
206 ; STREAMING-COMPAT-NEXT:    fmov d3, xzr
207 ; STREAMING-COMPAT-NEXT:    fmov d4, xzr
208 ; STREAMING-COMPAT-NEXT:    fmov d5, xzr
209 ; STREAMING-COMPAT-NEXT:    fmov d6, xzr
210 ; STREAMING-COMPAT-NEXT:    fmov d7, xzr
211 ; STREAMING-COMPAT-NEXT:    ret
213 entry:
214   %mul = mul nsw i32 %b, %a
215   %or = or i32 %mul, %c
216   ret i32 %or
219 define dso_local i32 @all(i32 noundef %a, i32 noundef %b, i32 noundef %c) local_unnamed_addr #0 "zero-call-used-regs"="all" {
220 ; DEFAULT-LABEL: all:
221 ; DEFAULT:       // %bb.0: // %entry
222 ; DEFAULT-NEXT:    mul w8, w1, w0
223 ; DEFAULT-NEXT:    mov x1, #0 // =0x0
224 ; DEFAULT-NEXT:    mov x3, #0 // =0x0
225 ; DEFAULT-NEXT:    mov x4, #0 // =0x0
226 ; DEFAULT-NEXT:    mov x5, #0 // =0x0
227 ; DEFAULT-NEXT:    mov x6, #0 // =0x0
228 ; DEFAULT-NEXT:    mov x7, #0 // =0x0
229 ; DEFAULT-NEXT:    mov x9, #0 // =0x0
230 ; DEFAULT-NEXT:    mov x10, #0 // =0x0
231 ; DEFAULT-NEXT:    orr w0, w8, w2
232 ; DEFAULT-NEXT:    mov x2, #0 // =0x0
233 ; DEFAULT-NEXT:    mov x8, #0 // =0x0
234 ; DEFAULT-NEXT:    mov x11, #0 // =0x0
235 ; DEFAULT-NEXT:    mov x12, #0 // =0x0
236 ; DEFAULT-NEXT:    mov x13, #0 // =0x0
237 ; DEFAULT-NEXT:    mov x14, #0 // =0x0
238 ; DEFAULT-NEXT:    mov x15, #0 // =0x0
239 ; DEFAULT-NEXT:    mov x16, #0 // =0x0
240 ; DEFAULT-NEXT:    mov x17, #0 // =0x0
241 ; DEFAULT-NEXT:    mov x18, #0 // =0x0
242 ; DEFAULT-NEXT:    movi v0.2d, #0000000000000000
243 ; DEFAULT-NEXT:    movi v1.2d, #0000000000000000
244 ; DEFAULT-NEXT:    movi v2.2d, #0000000000000000
245 ; DEFAULT-NEXT:    movi v3.2d, #0000000000000000
246 ; DEFAULT-NEXT:    movi v4.2d, #0000000000000000
247 ; DEFAULT-NEXT:    movi v5.2d, #0000000000000000
248 ; DEFAULT-NEXT:    movi v6.2d, #0000000000000000
249 ; DEFAULT-NEXT:    movi v7.2d, #0000000000000000
250 ; DEFAULT-NEXT:    movi v16.2d, #0000000000000000
251 ; DEFAULT-NEXT:    movi v17.2d, #0000000000000000
252 ; DEFAULT-NEXT:    movi v18.2d, #0000000000000000
253 ; DEFAULT-NEXT:    movi v19.2d, #0000000000000000
254 ; DEFAULT-NEXT:    movi v20.2d, #0000000000000000
255 ; DEFAULT-NEXT:    movi v21.2d, #0000000000000000
256 ; DEFAULT-NEXT:    movi v22.2d, #0000000000000000
257 ; DEFAULT-NEXT:    movi v23.2d, #0000000000000000
258 ; DEFAULT-NEXT:    movi v24.2d, #0000000000000000
259 ; DEFAULT-NEXT:    movi v25.2d, #0000000000000000
260 ; DEFAULT-NEXT:    movi v26.2d, #0000000000000000
261 ; DEFAULT-NEXT:    movi v27.2d, #0000000000000000
262 ; DEFAULT-NEXT:    movi v28.2d, #0000000000000000
263 ; DEFAULT-NEXT:    movi v29.2d, #0000000000000000
264 ; DEFAULT-NEXT:    movi v30.2d, #0000000000000000
265 ; DEFAULT-NEXT:    movi v31.2d, #0000000000000000
266 ; DEFAULT-NEXT:    ret
268 ; SVE-OR-SME-LABEL: all:
269 ; SVE-OR-SME:       // %bb.0: // %entry
270 ; SVE-OR-SME-NEXT:    mul w8, w1, w0
271 ; SVE-OR-SME-NEXT:    mov x1, #0 // =0x0
272 ; SVE-OR-SME-NEXT:    mov x3, #0 // =0x0
273 ; SVE-OR-SME-NEXT:    mov x4, #0 // =0x0
274 ; SVE-OR-SME-NEXT:    mov x5, #0 // =0x0
275 ; SVE-OR-SME-NEXT:    mov x6, #0 // =0x0
276 ; SVE-OR-SME-NEXT:    mov x7, #0 // =0x0
277 ; SVE-OR-SME-NEXT:    mov x9, #0 // =0x0
278 ; SVE-OR-SME-NEXT:    mov x10, #0 // =0x0
279 ; SVE-OR-SME-NEXT:    orr w0, w8, w2
280 ; SVE-OR-SME-NEXT:    mov x2, #0 // =0x0
281 ; SVE-OR-SME-NEXT:    mov x8, #0 // =0x0
282 ; SVE-OR-SME-NEXT:    mov x11, #0 // =0x0
283 ; SVE-OR-SME-NEXT:    mov x12, #0 // =0x0
284 ; SVE-OR-SME-NEXT:    mov x13, #0 // =0x0
285 ; SVE-OR-SME-NEXT:    mov x14, #0 // =0x0
286 ; SVE-OR-SME-NEXT:    mov x15, #0 // =0x0
287 ; SVE-OR-SME-NEXT:    mov x16, #0 // =0x0
288 ; SVE-OR-SME-NEXT:    mov x17, #0 // =0x0
289 ; SVE-OR-SME-NEXT:    mov x18, #0 // =0x0
290 ; SVE-OR-SME-NEXT:    mov z0.d, #0 // =0x0
291 ; SVE-OR-SME-NEXT:    mov z1.d, #0 // =0x0
292 ; SVE-OR-SME-NEXT:    mov z2.d, #0 // =0x0
293 ; SVE-OR-SME-NEXT:    mov z3.d, #0 // =0x0
294 ; SVE-OR-SME-NEXT:    mov z4.d, #0 // =0x0
295 ; SVE-OR-SME-NEXT:    mov z5.d, #0 // =0x0
296 ; SVE-OR-SME-NEXT:    mov z6.d, #0 // =0x0
297 ; SVE-OR-SME-NEXT:    mov z7.d, #0 // =0x0
298 ; SVE-OR-SME-NEXT:    mov z16.d, #0 // =0x0
299 ; SVE-OR-SME-NEXT:    mov z17.d, #0 // =0x0
300 ; SVE-OR-SME-NEXT:    mov z18.d, #0 // =0x0
301 ; SVE-OR-SME-NEXT:    mov z19.d, #0 // =0x0
302 ; SVE-OR-SME-NEXT:    mov z20.d, #0 // =0x0
303 ; SVE-OR-SME-NEXT:    mov z21.d, #0 // =0x0
304 ; SVE-OR-SME-NEXT:    mov z22.d, #0 // =0x0
305 ; SVE-OR-SME-NEXT:    mov z23.d, #0 // =0x0
306 ; SVE-OR-SME-NEXT:    mov z24.d, #0 // =0x0
307 ; SVE-OR-SME-NEXT:    mov z25.d, #0 // =0x0
308 ; SVE-OR-SME-NEXT:    mov z26.d, #0 // =0x0
309 ; SVE-OR-SME-NEXT:    mov z27.d, #0 // =0x0
310 ; SVE-OR-SME-NEXT:    mov z28.d, #0 // =0x0
311 ; SVE-OR-SME-NEXT:    mov z29.d, #0 // =0x0
312 ; SVE-OR-SME-NEXT:    mov z30.d, #0 // =0x0
313 ; SVE-OR-SME-NEXT:    mov z31.d, #0 // =0x0
314 ; SVE-OR-SME-NEXT:    pfalse p0.b
315 ; SVE-OR-SME-NEXT:    pfalse p1.b
316 ; SVE-OR-SME-NEXT:    pfalse p2.b
317 ; SVE-OR-SME-NEXT:    pfalse p3.b
318 ; SVE-OR-SME-NEXT:    pfalse p4.b
319 ; SVE-OR-SME-NEXT:    pfalse p5.b
320 ; SVE-OR-SME-NEXT:    pfalse p6.b
321 ; SVE-OR-SME-NEXT:    pfalse p7.b
322 ; SVE-OR-SME-NEXT:    pfalse p8.b
323 ; SVE-OR-SME-NEXT:    pfalse p9.b
324 ; SVE-OR-SME-NEXT:    pfalse p10.b
325 ; SVE-OR-SME-NEXT:    pfalse p11.b
326 ; SVE-OR-SME-NEXT:    pfalse p12.b
327 ; SVE-OR-SME-NEXT:    pfalse p13.b
328 ; SVE-OR-SME-NEXT:    pfalse p14.b
329 ; SVE-OR-SME-NEXT:    pfalse p15.b
330 ; SVE-OR-SME-NEXT:    ret
332 ; STREAMING-COMPAT-LABEL: all:
333 ; STREAMING-COMPAT:       // %bb.0: // %entry
334 ; STREAMING-COMPAT-NEXT:    mul w8, w1, w0
335 ; STREAMING-COMPAT-NEXT:    mov x1, #0 // =0x0
336 ; STREAMING-COMPAT-NEXT:    mov x3, #0 // =0x0
337 ; STREAMING-COMPAT-NEXT:    mov x4, #0 // =0x0
338 ; STREAMING-COMPAT-NEXT:    mov x5, #0 // =0x0
339 ; STREAMING-COMPAT-NEXT:    mov x6, #0 // =0x0
340 ; STREAMING-COMPAT-NEXT:    mov x7, #0 // =0x0
341 ; STREAMING-COMPAT-NEXT:    mov x9, #0 // =0x0
342 ; STREAMING-COMPAT-NEXT:    mov x10, #0 // =0x0
343 ; STREAMING-COMPAT-NEXT:    orr w0, w8, w2
344 ; STREAMING-COMPAT-NEXT:    mov x2, #0 // =0x0
345 ; STREAMING-COMPAT-NEXT:    mov x8, #0 // =0x0
346 ; STREAMING-COMPAT-NEXT:    mov x11, #0 // =0x0
347 ; STREAMING-COMPAT-NEXT:    mov x12, #0 // =0x0
348 ; STREAMING-COMPAT-NEXT:    mov x13, #0 // =0x0
349 ; STREAMING-COMPAT-NEXT:    mov x14, #0 // =0x0
350 ; STREAMING-COMPAT-NEXT:    mov x15, #0 // =0x0
351 ; STREAMING-COMPAT-NEXT:    mov x16, #0 // =0x0
352 ; STREAMING-COMPAT-NEXT:    mov x17, #0 // =0x0
353 ; STREAMING-COMPAT-NEXT:    mov x18, #0 // =0x0
354 ; STREAMING-COMPAT-NEXT:    fmov d0, xzr
355 ; STREAMING-COMPAT-NEXT:    fmov d1, xzr
356 ; STREAMING-COMPAT-NEXT:    fmov d2, xzr
357 ; STREAMING-COMPAT-NEXT:    fmov d3, xzr
358 ; STREAMING-COMPAT-NEXT:    fmov d4, xzr
359 ; STREAMING-COMPAT-NEXT:    fmov d5, xzr
360 ; STREAMING-COMPAT-NEXT:    fmov d6, xzr
361 ; STREAMING-COMPAT-NEXT:    fmov d7, xzr
362 ; STREAMING-COMPAT-NEXT:    fmov d16, xzr
363 ; STREAMING-COMPAT-NEXT:    fmov d17, xzr
364 ; STREAMING-COMPAT-NEXT:    fmov d18, xzr
365 ; STREAMING-COMPAT-NEXT:    fmov d19, xzr
366 ; STREAMING-COMPAT-NEXT:    fmov d20, xzr
367 ; STREAMING-COMPAT-NEXT:    fmov d21, xzr
368 ; STREAMING-COMPAT-NEXT:    fmov d22, xzr
369 ; STREAMING-COMPAT-NEXT:    fmov d23, xzr
370 ; STREAMING-COMPAT-NEXT:    fmov d24, xzr
371 ; STREAMING-COMPAT-NEXT:    fmov d25, xzr
372 ; STREAMING-COMPAT-NEXT:    fmov d26, xzr
373 ; STREAMING-COMPAT-NEXT:    fmov d27, xzr
374 ; STREAMING-COMPAT-NEXT:    fmov d28, xzr
375 ; STREAMING-COMPAT-NEXT:    fmov d29, xzr
376 ; STREAMING-COMPAT-NEXT:    fmov d30, xzr
377 ; STREAMING-COMPAT-NEXT:    fmov d31, xzr
378 ; STREAMING-COMPAT-NEXT:    ret
380 entry:
381   %mul = mul nsw i32 %b, %a
382   %or = or i32 %mul, %c
383   ret i32 %or
386 define dso_local double @skip_float(double noundef %a, float noundef %b) local_unnamed_addr #0 "zero-call-used-regs"="skip" {
387 ; CHECK-LABEL: skip_float:
388 ; CHECK:       // %bb.0: // %entry
389 ; CHECK-NEXT:    fcvt d1, s1
390 ; CHECK-NEXT:    fmul d0, d1, d0
391 ; CHECK-NEXT:    ret
393 entry:
394   %conv = fpext float %b to double
395   %mul = fmul double %conv, %a
396   ret double %mul
399 define dso_local double @used_gpr_arg_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used-gpr-arg" {
400 ; CHECK-LABEL: used_gpr_arg_float:
401 ; CHECK:       // %bb.0: // %entry
402 ; CHECK-NEXT:    fcvt d1, s1
403 ; CHECK-NEXT:    fmul d0, d1, d0
404 ; CHECK-NEXT:    ret
406 entry:
407   %conv = fpext float %b to double
408   %mul = fmul double %conv, %a
409   ret double %mul
412 define dso_local double @used_gpr_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used-gpr" {
413 ; CHECK-LABEL: used_gpr_float:
414 ; CHECK:       // %bb.0: // %entry
415 ; CHECK-NEXT:    fcvt d1, s1
416 ; CHECK-NEXT:    fmul d0, d1, d0
417 ; CHECK-NEXT:    ret
419 entry:
420   %conv = fpext float %b to double
421   %mul = fmul double %conv, %a
422   ret double %mul
425 define dso_local double @used_arg_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used-arg" {
426 ; DEFAULT-LABEL: used_arg_float:
427 ; DEFAULT:       // %bb.0: // %entry
428 ; DEFAULT-NEXT:    fcvt d1, s1
429 ; DEFAULT-NEXT:    fmul d0, d1, d0
430 ; DEFAULT-NEXT:    movi v1.2d, #0000000000000000
431 ; DEFAULT-NEXT:    ret
433 ; SVE-OR-SME-LABEL: used_arg_float:
434 ; SVE-OR-SME:       // %bb.0: // %entry
435 ; SVE-OR-SME-NEXT:    fcvt d1, s1
436 ; SVE-OR-SME-NEXT:    fmul d0, d1, d0
437 ; SVE-OR-SME-NEXT:    mov z1.d, #0 // =0x0
438 ; SVE-OR-SME-NEXT:    ret
440 ; STREAMING-COMPAT-LABEL: used_arg_float:
441 ; STREAMING-COMPAT:       // %bb.0: // %entry
442 ; STREAMING-COMPAT-NEXT:    fcvt d1, s1
443 ; STREAMING-COMPAT-NEXT:    fmul d0, d1, d0
444 ; STREAMING-COMPAT-NEXT:    fmov d1, xzr
445 ; STREAMING-COMPAT-NEXT:    ret
447 entry:
448   %conv = fpext float %b to double
449   %mul = fmul double %conv, %a
450   ret double %mul
453 define dso_local double @used_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="used" {
454 ; DEFAULT-LABEL: used_float:
455 ; DEFAULT:       // %bb.0: // %entry
456 ; DEFAULT-NEXT:    fcvt d1, s1
457 ; DEFAULT-NEXT:    fmul d0, d1, d0
458 ; DEFAULT-NEXT:    movi v1.2d, #0000000000000000
459 ; DEFAULT-NEXT:    ret
461 ; SVE-OR-SME-LABEL: used_float:
462 ; SVE-OR-SME:       // %bb.0: // %entry
463 ; SVE-OR-SME-NEXT:    fcvt d1, s1
464 ; SVE-OR-SME-NEXT:    fmul d0, d1, d0
465 ; SVE-OR-SME-NEXT:    mov z1.d, #0 // =0x0
466 ; SVE-OR-SME-NEXT:    ret
468 ; STREAMING-COMPAT-LABEL: used_float:
469 ; STREAMING-COMPAT:       // %bb.0: // %entry
470 ; STREAMING-COMPAT-NEXT:    fcvt d1, s1
471 ; STREAMING-COMPAT-NEXT:    fmul d0, d1, d0
472 ; STREAMING-COMPAT-NEXT:    fmov d1, xzr
473 ; STREAMING-COMPAT-NEXT:    ret
475 entry:
476   %conv = fpext float %b to double
477   %mul = fmul double %conv, %a
478   ret double %mul
481 define dso_local double @all_gpr_arg_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="all-gpr-arg" {
482 ; CHECK-LABEL: all_gpr_arg_float:
483 ; CHECK:       // %bb.0: // %entry
484 ; CHECK-NEXT:    fcvt d1, s1
485 ; CHECK-NEXT:    fmul d0, d1, d0
486 ; CHECK-NEXT:    mov x0, #0 // =0x0
487 ; CHECK-NEXT:    mov x1, #0 // =0x0
488 ; CHECK-NEXT:    mov x2, #0 // =0x0
489 ; CHECK-NEXT:    mov x3, #0 // =0x0
490 ; CHECK-NEXT:    mov x4, #0 // =0x0
491 ; CHECK-NEXT:    mov x5, #0 // =0x0
492 ; CHECK-NEXT:    mov x6, #0 // =0x0
493 ; CHECK-NEXT:    mov x7, #0 // =0x0
494 ; CHECK-NEXT:    mov x8, #0 // =0x0
495 ; CHECK-NEXT:    mov x18, #0 // =0x0
496 ; CHECK-NEXT:    ret
498 entry:
499   %conv = fpext float %b to double
500   %mul = fmul double %conv, %a
501   ret double %mul
504 define dso_local double @all_gpr_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="all-gpr" {
505 ; CHECK-LABEL: all_gpr_float:
506 ; CHECK:       // %bb.0: // %entry
507 ; CHECK-NEXT:    fcvt d1, s1
508 ; CHECK-NEXT:    fmul d0, d1, d0
509 ; CHECK-NEXT:    mov x0, #0 // =0x0
510 ; CHECK-NEXT:    mov x1, #0 // =0x0
511 ; CHECK-NEXT:    mov x2, #0 // =0x0
512 ; CHECK-NEXT:    mov x3, #0 // =0x0
513 ; CHECK-NEXT:    mov x4, #0 // =0x0
514 ; CHECK-NEXT:    mov x5, #0 // =0x0
515 ; CHECK-NEXT:    mov x6, #0 // =0x0
516 ; CHECK-NEXT:    mov x7, #0 // =0x0
517 ; CHECK-NEXT:    mov x8, #0 // =0x0
518 ; CHECK-NEXT:    mov x9, #0 // =0x0
519 ; CHECK-NEXT:    mov x10, #0 // =0x0
520 ; CHECK-NEXT:    mov x11, #0 // =0x0
521 ; CHECK-NEXT:    mov x12, #0 // =0x0
522 ; CHECK-NEXT:    mov x13, #0 // =0x0
523 ; CHECK-NEXT:    mov x14, #0 // =0x0
524 ; CHECK-NEXT:    mov x15, #0 // =0x0
525 ; CHECK-NEXT:    mov x16, #0 // =0x0
526 ; CHECK-NEXT:    mov x17, #0 // =0x0
527 ; CHECK-NEXT:    mov x18, #0 // =0x0
528 ; CHECK-NEXT:    ret
530 entry:
531   %conv = fpext float %b to double
532   %mul = fmul double %conv, %a
533   ret double %mul
536 define dso_local double @all_arg_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="all-arg" {
537 ; DEFAULT-LABEL: all_arg_float:
538 ; DEFAULT:       // %bb.0: // %entry
539 ; DEFAULT-NEXT:    fcvt d1, s1
540 ; DEFAULT-NEXT:    fmul d0, d1, d0
541 ; DEFAULT-NEXT:    mov x0, #0 // =0x0
542 ; DEFAULT-NEXT:    mov x1, #0 // =0x0
543 ; DEFAULT-NEXT:    mov x2, #0 // =0x0
544 ; DEFAULT-NEXT:    mov x3, #0 // =0x0
545 ; DEFAULT-NEXT:    mov x4, #0 // =0x0
546 ; DEFAULT-NEXT:    mov x5, #0 // =0x0
547 ; DEFAULT-NEXT:    mov x6, #0 // =0x0
548 ; DEFAULT-NEXT:    mov x7, #0 // =0x0
549 ; DEFAULT-NEXT:    mov x8, #0 // =0x0
550 ; DEFAULT-NEXT:    mov x18, #0 // =0x0
551 ; DEFAULT-NEXT:    movi v1.2d, #0000000000000000
552 ; DEFAULT-NEXT:    movi v2.2d, #0000000000000000
553 ; DEFAULT-NEXT:    movi v3.2d, #0000000000000000
554 ; DEFAULT-NEXT:    movi v4.2d, #0000000000000000
555 ; DEFAULT-NEXT:    movi v5.2d, #0000000000000000
556 ; DEFAULT-NEXT:    movi v6.2d, #0000000000000000
557 ; DEFAULT-NEXT:    movi v7.2d, #0000000000000000
558 ; DEFAULT-NEXT:    ret
560 ; SVE-OR-SME-LABEL: all_arg_float:
561 ; SVE-OR-SME:       // %bb.0: // %entry
562 ; SVE-OR-SME-NEXT:    fcvt d1, s1
563 ; SVE-OR-SME-NEXT:    fmul d0, d1, d0
564 ; SVE-OR-SME-NEXT:    mov x0, #0 // =0x0
565 ; SVE-OR-SME-NEXT:    mov x1, #0 // =0x0
566 ; SVE-OR-SME-NEXT:    mov x2, #0 // =0x0
567 ; SVE-OR-SME-NEXT:    mov x3, #0 // =0x0
568 ; SVE-OR-SME-NEXT:    mov x4, #0 // =0x0
569 ; SVE-OR-SME-NEXT:    mov x5, #0 // =0x0
570 ; SVE-OR-SME-NEXT:    mov x6, #0 // =0x0
571 ; SVE-OR-SME-NEXT:    mov x7, #0 // =0x0
572 ; SVE-OR-SME-NEXT:    mov x8, #0 // =0x0
573 ; SVE-OR-SME-NEXT:    mov x18, #0 // =0x0
574 ; SVE-OR-SME-NEXT:    mov z1.d, #0 // =0x0
575 ; SVE-OR-SME-NEXT:    mov z2.d, #0 // =0x0
576 ; SVE-OR-SME-NEXT:    mov z3.d, #0 // =0x0
577 ; SVE-OR-SME-NEXT:    mov z4.d, #0 // =0x0
578 ; SVE-OR-SME-NEXT:    mov z5.d, #0 // =0x0
579 ; SVE-OR-SME-NEXT:    mov z6.d, #0 // =0x0
580 ; SVE-OR-SME-NEXT:    mov z7.d, #0 // =0x0
581 ; SVE-OR-SME-NEXT:    pfalse p0.b
582 ; SVE-OR-SME-NEXT:    pfalse p1.b
583 ; SVE-OR-SME-NEXT:    pfalse p2.b
584 ; SVE-OR-SME-NEXT:    pfalse p3.b
585 ; SVE-OR-SME-NEXT:    ret
587 ; STREAMING-COMPAT-LABEL: all_arg_float:
588 ; STREAMING-COMPAT:       // %bb.0: // %entry
589 ; STREAMING-COMPAT-NEXT:    fcvt d1, s1
590 ; STREAMING-COMPAT-NEXT:    fmul d0, d1, d0
591 ; STREAMING-COMPAT-NEXT:    mov x0, #0 // =0x0
592 ; STREAMING-COMPAT-NEXT:    mov x1, #0 // =0x0
593 ; STREAMING-COMPAT-NEXT:    mov x2, #0 // =0x0
594 ; STREAMING-COMPAT-NEXT:    mov x3, #0 // =0x0
595 ; STREAMING-COMPAT-NEXT:    mov x4, #0 // =0x0
596 ; STREAMING-COMPAT-NEXT:    mov x5, #0 // =0x0
597 ; STREAMING-COMPAT-NEXT:    mov x6, #0 // =0x0
598 ; STREAMING-COMPAT-NEXT:    mov x7, #0 // =0x0
599 ; STREAMING-COMPAT-NEXT:    mov x8, #0 // =0x0
600 ; STREAMING-COMPAT-NEXT:    mov x18, #0 // =0x0
601 ; STREAMING-COMPAT-NEXT:    fmov d1, xzr
602 ; STREAMING-COMPAT-NEXT:    fmov d2, xzr
603 ; STREAMING-COMPAT-NEXT:    fmov d3, xzr
604 ; STREAMING-COMPAT-NEXT:    fmov d4, xzr
605 ; STREAMING-COMPAT-NEXT:    fmov d5, xzr
606 ; STREAMING-COMPAT-NEXT:    fmov d6, xzr
607 ; STREAMING-COMPAT-NEXT:    fmov d7, xzr
608 ; STREAMING-COMPAT-NEXT:    ret
610 entry:
611   %conv = fpext float %b to double
612   %mul = fmul double %conv, %a
613   ret double %mul
616 define dso_local double @all_float(double noundef %a, float noundef %b) local_unnamed_addr #0 noinline optnone "zero-call-used-regs"="all" {
617 ; DEFAULT-LABEL: all_float:
618 ; DEFAULT:       // %bb.0: // %entry
619 ; DEFAULT-NEXT:    fcvt d1, s1
620 ; DEFAULT-NEXT:    fmul d0, d1, d0
621 ; DEFAULT-NEXT:    mov x0, #0 // =0x0
622 ; DEFAULT-NEXT:    mov x1, #0 // =0x0
623 ; DEFAULT-NEXT:    mov x2, #0 // =0x0
624 ; DEFAULT-NEXT:    mov x3, #0 // =0x0
625 ; DEFAULT-NEXT:    mov x4, #0 // =0x0
626 ; DEFAULT-NEXT:    mov x5, #0 // =0x0
627 ; DEFAULT-NEXT:    mov x6, #0 // =0x0
628 ; DEFAULT-NEXT:    mov x7, #0 // =0x0
629 ; DEFAULT-NEXT:    mov x8, #0 // =0x0
630 ; DEFAULT-NEXT:    mov x9, #0 // =0x0
631 ; DEFAULT-NEXT:    mov x10, #0 // =0x0
632 ; DEFAULT-NEXT:    mov x11, #0 // =0x0
633 ; DEFAULT-NEXT:    mov x12, #0 // =0x0
634 ; DEFAULT-NEXT:    mov x13, #0 // =0x0
635 ; DEFAULT-NEXT:    mov x14, #0 // =0x0
636 ; DEFAULT-NEXT:    mov x15, #0 // =0x0
637 ; DEFAULT-NEXT:    mov x16, #0 // =0x0
638 ; DEFAULT-NEXT:    mov x17, #0 // =0x0
639 ; DEFAULT-NEXT:    mov x18, #0 // =0x0
640 ; DEFAULT-NEXT:    movi v1.2d, #0000000000000000
641 ; DEFAULT-NEXT:    movi v2.2d, #0000000000000000
642 ; DEFAULT-NEXT:    movi v3.2d, #0000000000000000
643 ; DEFAULT-NEXT:    movi v4.2d, #0000000000000000
644 ; DEFAULT-NEXT:    movi v5.2d, #0000000000000000
645 ; DEFAULT-NEXT:    movi v6.2d, #0000000000000000
646 ; DEFAULT-NEXT:    movi v7.2d, #0000000000000000
647 ; DEFAULT-NEXT:    movi v16.2d, #0000000000000000
648 ; DEFAULT-NEXT:    movi v17.2d, #0000000000000000
649 ; DEFAULT-NEXT:    movi v18.2d, #0000000000000000
650 ; DEFAULT-NEXT:    movi v19.2d, #0000000000000000
651 ; DEFAULT-NEXT:    movi v20.2d, #0000000000000000
652 ; DEFAULT-NEXT:    movi v21.2d, #0000000000000000
653 ; DEFAULT-NEXT:    movi v22.2d, #0000000000000000
654 ; DEFAULT-NEXT:    movi v23.2d, #0000000000000000
655 ; DEFAULT-NEXT:    movi v24.2d, #0000000000000000
656 ; DEFAULT-NEXT:    movi v25.2d, #0000000000000000
657 ; DEFAULT-NEXT:    movi v26.2d, #0000000000000000
658 ; DEFAULT-NEXT:    movi v27.2d, #0000000000000000
659 ; DEFAULT-NEXT:    movi v28.2d, #0000000000000000
660 ; DEFAULT-NEXT:    movi v29.2d, #0000000000000000
661 ; DEFAULT-NEXT:    movi v30.2d, #0000000000000000
662 ; DEFAULT-NEXT:    movi v31.2d, #0000000000000000
663 ; DEFAULT-NEXT:    ret
665 ; SVE-OR-SME-LABEL: all_float:
666 ; SVE-OR-SME:       // %bb.0: // %entry
667 ; SVE-OR-SME-NEXT:    fcvt d1, s1
668 ; SVE-OR-SME-NEXT:    fmul d0, d1, d0
669 ; SVE-OR-SME-NEXT:    mov x0, #0 // =0x0
670 ; SVE-OR-SME-NEXT:    mov x1, #0 // =0x0
671 ; SVE-OR-SME-NEXT:    mov x2, #0 // =0x0
672 ; SVE-OR-SME-NEXT:    mov x3, #0 // =0x0
673 ; SVE-OR-SME-NEXT:    mov x4, #0 // =0x0
674 ; SVE-OR-SME-NEXT:    mov x5, #0 // =0x0
675 ; SVE-OR-SME-NEXT:    mov x6, #0 // =0x0
676 ; SVE-OR-SME-NEXT:    mov x7, #0 // =0x0
677 ; SVE-OR-SME-NEXT:    mov x8, #0 // =0x0
678 ; SVE-OR-SME-NEXT:    mov x9, #0 // =0x0
679 ; SVE-OR-SME-NEXT:    mov x10, #0 // =0x0
680 ; SVE-OR-SME-NEXT:    mov x11, #0 // =0x0
681 ; SVE-OR-SME-NEXT:    mov x12, #0 // =0x0
682 ; SVE-OR-SME-NEXT:    mov x13, #0 // =0x0
683 ; SVE-OR-SME-NEXT:    mov x14, #0 // =0x0
684 ; SVE-OR-SME-NEXT:    mov x15, #0 // =0x0
685 ; SVE-OR-SME-NEXT:    mov x16, #0 // =0x0
686 ; SVE-OR-SME-NEXT:    mov x17, #0 // =0x0
687 ; SVE-OR-SME-NEXT:    mov x18, #0 // =0x0
688 ; SVE-OR-SME-NEXT:    mov z1.d, #0 // =0x0
689 ; SVE-OR-SME-NEXT:    mov z2.d, #0 // =0x0
690 ; SVE-OR-SME-NEXT:    mov z3.d, #0 // =0x0
691 ; SVE-OR-SME-NEXT:    mov z4.d, #0 // =0x0
692 ; SVE-OR-SME-NEXT:    mov z5.d, #0 // =0x0
693 ; SVE-OR-SME-NEXT:    mov z6.d, #0 // =0x0
694 ; SVE-OR-SME-NEXT:    mov z7.d, #0 // =0x0
695 ; SVE-OR-SME-NEXT:    mov z16.d, #0 // =0x0
696 ; SVE-OR-SME-NEXT:    mov z17.d, #0 // =0x0
697 ; SVE-OR-SME-NEXT:    mov z18.d, #0 // =0x0
698 ; SVE-OR-SME-NEXT:    mov z19.d, #0 // =0x0
699 ; SVE-OR-SME-NEXT:    mov z20.d, #0 // =0x0
700 ; SVE-OR-SME-NEXT:    mov z21.d, #0 // =0x0
701 ; SVE-OR-SME-NEXT:    mov z22.d, #0 // =0x0
702 ; SVE-OR-SME-NEXT:    mov z23.d, #0 // =0x0
703 ; SVE-OR-SME-NEXT:    mov z24.d, #0 // =0x0
704 ; SVE-OR-SME-NEXT:    mov z25.d, #0 // =0x0
705 ; SVE-OR-SME-NEXT:    mov z26.d, #0 // =0x0
706 ; SVE-OR-SME-NEXT:    mov z27.d, #0 // =0x0
707 ; SVE-OR-SME-NEXT:    mov z28.d, #0 // =0x0
708 ; SVE-OR-SME-NEXT:    mov z29.d, #0 // =0x0
709 ; SVE-OR-SME-NEXT:    mov z30.d, #0 // =0x0
710 ; SVE-OR-SME-NEXT:    mov z31.d, #0 // =0x0
711 ; SVE-OR-SME-NEXT:    pfalse p0.b
712 ; SVE-OR-SME-NEXT:    pfalse p1.b
713 ; SVE-OR-SME-NEXT:    pfalse p2.b
714 ; SVE-OR-SME-NEXT:    pfalse p3.b
715 ; SVE-OR-SME-NEXT:    pfalse p4.b
716 ; SVE-OR-SME-NEXT:    pfalse p5.b
717 ; SVE-OR-SME-NEXT:    pfalse p6.b
718 ; SVE-OR-SME-NEXT:    pfalse p7.b
719 ; SVE-OR-SME-NEXT:    pfalse p8.b
720 ; SVE-OR-SME-NEXT:    pfalse p9.b
721 ; SVE-OR-SME-NEXT:    pfalse p10.b
722 ; SVE-OR-SME-NEXT:    pfalse p11.b
723 ; SVE-OR-SME-NEXT:    pfalse p12.b
724 ; SVE-OR-SME-NEXT:    pfalse p13.b
725 ; SVE-OR-SME-NEXT:    pfalse p14.b
726 ; SVE-OR-SME-NEXT:    pfalse p15.b
727 ; SVE-OR-SME-NEXT:    ret
729 ; STREAMING-COMPAT-LABEL: all_float:
730 ; STREAMING-COMPAT:       // %bb.0: // %entry
731 ; STREAMING-COMPAT-NEXT:    fcvt d1, s1
732 ; STREAMING-COMPAT-NEXT:    fmul d0, d1, d0
733 ; STREAMING-COMPAT-NEXT:    mov x0, #0 // =0x0
734 ; STREAMING-COMPAT-NEXT:    mov x1, #0 // =0x0
735 ; STREAMING-COMPAT-NEXT:    mov x2, #0 // =0x0
736 ; STREAMING-COMPAT-NEXT:    mov x3, #0 // =0x0
737 ; STREAMING-COMPAT-NEXT:    mov x4, #0 // =0x0
738 ; STREAMING-COMPAT-NEXT:    mov x5, #0 // =0x0
739 ; STREAMING-COMPAT-NEXT:    mov x6, #0 // =0x0
740 ; STREAMING-COMPAT-NEXT:    mov x7, #0 // =0x0
741 ; STREAMING-COMPAT-NEXT:    mov x8, #0 // =0x0
742 ; STREAMING-COMPAT-NEXT:    mov x9, #0 // =0x0
743 ; STREAMING-COMPAT-NEXT:    mov x10, #0 // =0x0
744 ; STREAMING-COMPAT-NEXT:    mov x11, #0 // =0x0
745 ; STREAMING-COMPAT-NEXT:    mov x12, #0 // =0x0
746 ; STREAMING-COMPAT-NEXT:    mov x13, #0 // =0x0
747 ; STREAMING-COMPAT-NEXT:    mov x14, #0 // =0x0
748 ; STREAMING-COMPAT-NEXT:    mov x15, #0 // =0x0
749 ; STREAMING-COMPAT-NEXT:    mov x16, #0 // =0x0
750 ; STREAMING-COMPAT-NEXT:    mov x17, #0 // =0x0
751 ; STREAMING-COMPAT-NEXT:    mov x18, #0 // =0x0
752 ; STREAMING-COMPAT-NEXT:    fmov d1, xzr
753 ; STREAMING-COMPAT-NEXT:    fmov d2, xzr
754 ; STREAMING-COMPAT-NEXT:    fmov d3, xzr
755 ; STREAMING-COMPAT-NEXT:    fmov d4, xzr
756 ; STREAMING-COMPAT-NEXT:    fmov d5, xzr
757 ; STREAMING-COMPAT-NEXT:    fmov d6, xzr
758 ; STREAMING-COMPAT-NEXT:    fmov d7, xzr
759 ; STREAMING-COMPAT-NEXT:    fmov d16, xzr
760 ; STREAMING-COMPAT-NEXT:    fmov d17, xzr
761 ; STREAMING-COMPAT-NEXT:    fmov d18, xzr
762 ; STREAMING-COMPAT-NEXT:    fmov d19, xzr
763 ; STREAMING-COMPAT-NEXT:    fmov d20, xzr
764 ; STREAMING-COMPAT-NEXT:    fmov d21, xzr
765 ; STREAMING-COMPAT-NEXT:    fmov d22, xzr
766 ; STREAMING-COMPAT-NEXT:    fmov d23, xzr
767 ; STREAMING-COMPAT-NEXT:    fmov d24, xzr
768 ; STREAMING-COMPAT-NEXT:    fmov d25, xzr
769 ; STREAMING-COMPAT-NEXT:    fmov d26, xzr
770 ; STREAMING-COMPAT-NEXT:    fmov d27, xzr
771 ; STREAMING-COMPAT-NEXT:    fmov d28, xzr
772 ; STREAMING-COMPAT-NEXT:    fmov d29, xzr
773 ; STREAMING-COMPAT-NEXT:    fmov d30, xzr
774 ; STREAMING-COMPAT-NEXT:    fmov d31, xzr
775 ; STREAMING-COMPAT-NEXT:    ret
777 entry:
778   %conv = fpext float %b to double
779   %mul = fmul double %conv, %a
780   ret double %mul
783 ; Don't emit zeroing registers in "main" function.
784 define dso_local i32 @main() local_unnamed_addr #0 {
785 ; CHECK-LABEL: main:
786 ; CHECK:       // %bb.0: // %entry
787 ; CHECK-NEXT:    mov w0, wzr
788 ; CHECK-NEXT:    ret
790 entry:
791   ret i32 0
794 attributes #0 = { mustprogress nofree norecurse nosync nounwind readnone willreturn uwtable "frame-pointer"="non-leaf" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+neon,+v8a" }