@@ -297,41 +297,51 @@ define <4 x half> @sitofp_v4i8(<4 x i8> %a) #0 {
297
297
}
298
298
299
299
define <8 x half > @sitofp_v8i8 (<8 x i8 > %a ) #0 {
300
- ; CHECK-LABEL: sitofp_v8i8:
301
- ; CHECK-NEXT: sshll v0.8h, v0.8b, #0
302
- ; CHECK-NEXT: sshll2 v1.4s, v0.8h, #0
303
- ; CHECK-NEXT: sshll v0.4s, v0.4h, #0
304
- ; CHECK-NEXT: scvtf v1.4s, v1.4s
305
- ; CHECK-NEXT: scvtf v0.4s, v0.4s
306
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
307
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
308
- ; CHECK-NEXT: mov v0.d[1], v1.d[0]
309
- ; CHECK-NEXT: ret
300
+ ; CHECK-CVT- LABEL: sitofp_v8i8:
301
+ ; CHECK-CVT- NEXT: sshll v0.8h, v0.8b, #0
302
+ ; CHECK-CVT- NEXT: sshll2 v1.4s, v0.8h, #0
303
+ ; CHECK-CVT- NEXT: sshll v0.4s, v0.4h, #0
304
+ ; CHECK-CVT- NEXT: scvtf v1.4s, v1.4s
305
+ ; CHECK-CVT- NEXT: scvtf v0.4s, v0.4s
306
+ ; CHECK-CVT- NEXT: fcvtn v1.4h, v1.4s
307
+ ; CHECK-CVT- NEXT: fcvtn v0.4h, v0.4s
308
+ ; CHECK-CVT- NEXT: mov v0.d[1], v1.d[0]
309
+ ; CHECK-CVT- NEXT: ret
310
310
;
311
+ ; CHECK-FP16-LABEL: sitofp_v8i8:
312
+ ; CHECK-FP16-NEXT: sshll v0.8h, v0.8b, #0
313
+ ; CHECK-FP16-NEXT: scvtf v0.8h, v0.8h
314
+ ; CHECK-FP16-NEXT: ret
311
315
%1 = sitofp <8 x i8 > %a to <8 x half >
312
316
ret <8 x half > %1
313
317
}
314
318
315
319
define <16 x half > @sitofp_v16i8 (<16 x i8 > %a ) #0 {
316
- ; CHECK-LABEL: sitofp_v16i8:
317
- ; CHECK-NEXT: sshll2 v1.8h, v0.16b, #0
318
- ; CHECK-NEXT: sshll2 v2.4s, v1.8h, #0
319
- ; CHECK-NEXT: sshll v1.4s, v1.4h, #0
320
- ; CHECK-NEXT: scvtf v2.4s, v2.4s
321
- ; CHECK-NEXT: scvtf v1.4s, v1.4s
322
- ; CHECK-NEXT: sshll v0.8h, v0.8b, #0
323
- ; CHECK-NEXT: fcvtn v2.4h, v2.4s
324
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
325
- ; CHECK-NEXT: mov v1.d[1], v2.d[0]
326
- ; CHECK-NEXT: sshll2 v2.4s, v0.8h, #0
327
- ; CHECK-NEXT: sshll v0.4s, v0.4h, #0
328
- ; CHECK-NEXT: scvtf v2.4s, v2.4s
329
- ; CHECK-NEXT: scvtf v0.4s, v0.4s
330
- ; CHECK-NEXT: fcvtn v2.4h, v2.4s
331
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
332
- ; CHECK-NEXT: mov v0.d[1], v2.d[0]
333
- ; CHECK-NEXT: ret
320
+ ; CHECK-CVT- LABEL: sitofp_v16i8:
321
+ ; CHECK-CVT- NEXT: sshll2 v1.8h, v0.16b, #0
322
+ ; CHECK-CVT- NEXT: sshll2 v2.4s, v1.8h, #0
323
+ ; CHECK-CVT- NEXT: sshll v1.4s, v1.4h, #0
324
+ ; CHECK-CVT- NEXT: scvtf v2.4s, v2.4s
325
+ ; CHECK-CVT- NEXT: scvtf v1.4s, v1.4s
326
+ ; CHECK-CVT- NEXT: sshll v0.8h, v0.8b, #0
327
+ ; CHECK-CVT- NEXT: fcvtn v2.4h, v2.4s
328
+ ; CHECK-CVT- NEXT: fcvtn v1.4h, v1.4s
329
+ ; CHECK-CVT- NEXT: mov v1.d[1], v2.d[0]
330
+ ; CHECK-CVT- NEXT: sshll2 v2.4s, v0.8h, #0
331
+ ; CHECK-CVT- NEXT: sshll v0.4s, v0.4h, #0
332
+ ; CHECK-CVT- NEXT: scvtf v2.4s, v2.4s
333
+ ; CHECK-CVT- NEXT: scvtf v0.4s, v0.4s
334
+ ; CHECK-CVT- NEXT: fcvtn v2.4h, v2.4s
335
+ ; CHECK-CVT- NEXT: fcvtn v0.4h, v0.4s
336
+ ; CHECK-CVT- NEXT: mov v0.d[1], v2.d[0]
337
+ ; CHECK-CVT- NEXT: ret
334
338
;
339
+ ; CHECK-FP16-LABEL: sitofp_v16i8:
340
+ ; CHECK-FP16-NEXT: sshll2 v1.8h, v0.16b, #0
341
+ ; CHECK-FP16-NEXT: sshll v0.8h, v0.8b, #0
342
+ ; CHECK-FP16-NEXT: scvtf v1.8h, v1.8h
343
+ ; CHECK-FP16-NEXT: scvtf v0.8h, v0.8h
344
+ ; CHECK-FP16-NEXT: ret
335
345
%1 = sitofp <16 x i8 > %a to <16 x half >
336
346
ret <16 x half > %1
337
347
}
@@ -391,40 +401,52 @@ define <4 x half> @uitofp_v4i8(<4 x i8> %a) #0 {
391
401
}
392
402
393
403
define <8 x half > @uitofp_v8i8 (<8 x i8 > %a ) #0 {
394
- ; CHECK-LABEL: uitofp_v8i8:
395
- ; CHECK-NEXT: ushll v0.8h, v0.8b, #0
396
- ; CHECK-NEXT: ushll2 v1.4s, v0.8h, #0
397
- ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
398
- ; CHECK-NEXT: ucvtf v1.4s, v1.4s
399
- ; CHECK-NEXT: ucvtf v0.4s, v0.4s
400
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
401
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
402
- ; CHECK-NEXT: mov v0.d[1], v1.d[0]
403
- ; CHECK-NEXT: ret
404
+ ; CHECK-CVT-LABEL: uitofp_v8i8:
405
+ ; CHECK-CVT-NEXT: ushll v0.8h, v0.8b, #0
406
+ ; CHECK-CVT-NEXT: ushll2 v1.4s, v0.8h, #0
407
+ ; CHECK-CVT-NEXT: ushll v0.4s, v0.4h, #0
408
+ ; CHECK-CVT-NEXT: ucvtf v1.4s, v1.4s
409
+ ; CHECK-CVT-NEXT: ucvtf v0.4s, v0.4s
410
+ ; CHECK-CVT-NEXT: fcvtn v1.4h, v1.4s
411
+ ; CHECK-CVT-NEXT: fcvtn v0.4h, v0.4s
412
+ ; CHECK-CVT-NEXT: mov v0.d[1], v1.d[0]
413
+ ; CHECK-CVT-NEXT: ret
414
+ ;
415
+ ; CHECK-FP16-LABEL: uitofp_v8i8:
416
+ ; CHECK-FP16-NEXT: ushll v0.8h, v0.8b, #0
417
+ ; CHECK-FP16-NEXT: ucvtf v0.8h, v0.8h
418
+ ; CHECK-FP16-NEXT: ret
404
419
;
405
420
%1 = uitofp <8 x i8 > %a to <8 x half >
406
421
ret <8 x half > %1
407
422
}
408
423
409
424
define <16 x half > @uitofp_v16i8 (<16 x i8 > %a ) #0 {
410
- ; CHECK-LABEL: uitofp_v16i8:
411
- ; CHECK-NEXT: ushll2 v1.8h, v0.16b, #0
412
- ; CHECK-NEXT: ushll2 v2.4s, v1.8h, #0
413
- ; CHECK-NEXT: ushll v1.4s, v1.4h, #0
414
- ; CHECK-NEXT: ucvtf v2.4s, v2.4s
415
- ; CHECK-NEXT: ucvtf v1.4s, v1.4s
416
- ; CHECK-NEXT: ushll v0.8h, v0.8b, #0
417
- ; CHECK-NEXT: fcvtn v2.4h, v2.4s
418
- ; CHECK-NEXT: fcvtn v1.4h, v1.4s
419
- ; CHECK-NEXT: mov v1.d[1], v2.d[0]
420
- ; CHECK-NEXT: ushll2 v2.4s, v0.8h, #0
421
- ; CHECK-NEXT: ushll v0.4s, v0.4h, #0
422
- ; CHECK-NEXT: ucvtf v2.4s, v2.4s
423
- ; CHECK-NEXT: ucvtf v0.4s, v0.4s
424
- ; CHECK-NEXT: fcvtn v2.4h, v2.4s
425
- ; CHECK-NEXT: fcvtn v0.4h, v0.4s
426
- ; CHECK-NEXT: mov v0.d[1], v2.d[0]
427
- ; CHECK-NEXT: ret
425
+ ; CHECK-CVT-LABEL: uitofp_v16i8:
426
+ ; CHECK-CVT-NEXT: ushll2 v1.8h, v0.16b, #0
427
+ ; CHECK-CVT-NEXT: ushll2 v2.4s, v1.8h, #0
428
+ ; CHECK-CVT-NEXT: ushll v1.4s, v1.4h, #0
429
+ ; CHECK-CVT-NEXT: ucvtf v2.4s, v2.4s
430
+ ; CHECK-CVT-NEXT: ucvtf v1.4s, v1.4s
431
+ ; CHECK-CVT-NEXT: ushll v0.8h, v0.8b, #0
432
+ ; CHECK-CVT-NEXT: fcvtn v2.4h, v2.4s
433
+ ; CHECK-CVT-NEXT: fcvtn v1.4h, v1.4s
434
+ ; CHECK-CVT-NEXT: mov v1.d[1], v2.d[0]
435
+ ; CHECK-CVT-NEXT: ushll2 v2.4s, v0.8h, #0
436
+ ; CHECK-CVT-NEXT: ushll v0.4s, v0.4h, #0
437
+ ; CHECK-CVT-NEXT: ucvtf v2.4s, v2.4s
438
+ ; CHECK-CVT-NEXT: ucvtf v0.4s, v0.4s
439
+ ; CHECK-CVT-NEXT: fcvtn v2.4h, v2.4s
440
+ ; CHECK-CVT-NEXT: fcvtn v0.4h, v0.4s
441
+ ; CHECK-CVT-NEXT: mov v0.d[1], v2.d[0]
442
+ ; CHECK-CVT-NEXT: ret
443
+ ;
444
+ ; CHECK-FP16-LABEL: uitofp_v16i8:
445
+ ; CHECK-FP16-NEXT: ushll2 v1.8h, v0.16b, #0
446
+ ; CHECK-FP16-NEXT: ushll v0.8h, v0.8b, #0
447
+ ; CHECK-FP16-NEXT: ucvtf v1.8h, v1.8h
448
+ ; CHECK-FP16-NEXT: ucvtf v0.8h, v0.8h
449
+ ; CHECK-FP16-NEXT: ret
428
450
;
429
451
%1 = uitofp <16 x i8 > %a to <16 x half >
430
452
ret <16 x half > %1
0 commit comments