@@ -1145,8 +1145,6 @@ define <7 x half> @v7f16_half(<7 x half> %a, <7 x half> %b, <7 x half> %d, <7 x
1145
1145
; CHECK-SD-NOFP16-NEXT: fcmgt v4.4s, v5.4s, v4.4s
1146
1146
; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v1.4s, v0.4s
1147
1147
; CHECK-SD-NOFP16-NEXT: uzp1 v0.8h, v0.8h, v4.8h
1148
- ; CHECK-SD-NOFP16-NEXT: shl v0.8h, v0.8h, #15
1149
- ; CHECK-SD-NOFP16-NEXT: cmlt v0.8h, v0.8h, #0
1150
1148
; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v2.16b, v3.16b
1151
1149
; CHECK-SD-NOFP16-NEXT: ret
1152
1150
;
@@ -1275,8 +1273,6 @@ define <8 x half> @v8f16_half(<8 x half> %a, <8 x half> %b, <8 x half> %d, <8 x
1275
1273
; CHECK-SD-NOFP16-NEXT: fcmgt v4.4s, v5.4s, v4.4s
1276
1274
; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v1.4s, v0.4s
1277
1275
; CHECK-SD-NOFP16-NEXT: uzp1 v0.8h, v0.8h, v4.8h
1278
- ; CHECK-SD-NOFP16-NEXT: shl v0.8h, v0.8h, #15
1279
- ; CHECK-SD-NOFP16-NEXT: cmlt v0.8h, v0.8h, #0
1280
1276
; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v2.16b, v3.16b
1281
1277
; CHECK-SD-NOFP16-NEXT: ret
1282
1278
;
@@ -1328,10 +1324,6 @@ define <16 x half> @v16f16_half(<16 x half> %a, <16 x half> %b, <16 x half> %d,
1328
1324
; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v2.4s, v0.4s
1329
1325
; CHECK-SD-NOFP16-NEXT: uzp1 v1.8h, v1.8h, v16.8h
1330
1326
; CHECK-SD-NOFP16-NEXT: uzp1 v0.8h, v0.8h, v3.8h
1331
- ; CHECK-SD-NOFP16-NEXT: shl v1.8h, v1.8h, #15
1332
- ; CHECK-SD-NOFP16-NEXT: shl v0.8h, v0.8h, #15
1333
- ; CHECK-SD-NOFP16-NEXT: cmlt v1.8h, v1.8h, #0
1334
- ; CHECK-SD-NOFP16-NEXT: cmlt v0.8h, v0.8h, #0
1335
1327
; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v5.16b, v7.16b
1336
1328
; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v4.16b, v6.16b
1337
1329
; CHECK-SD-NOFP16-NEXT: ret
@@ -1384,45 +1376,41 @@ entry:
1384
1376
define <7 x i32 > @v7f16_i32 (<7 x half > %a , <7 x half > %b , <7 x i32 > %d , <7 x i32 > %e ) {
1385
1377
; CHECK-SD-NOFP16-LABEL: v7f16_i32:
1386
1378
; CHECK-SD-NOFP16: // %bb.0: // %entry
1387
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v2.4s, v0.8h
1388
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v3.4s, v1.8h
1379
+ ; CHECK-SD-NOFP16-NEXT: fmov s2, w0
1380
+ ; CHECK-SD-NOFP16-NEXT: fmov s4, w7
1389
1381
; CHECK-SD-NOFP16-NEXT: mov x8, sp
1390
- ; CHECK-SD-NOFP16-NEXT: fcvtl v0.4s, v0.4h
1391
- ; CHECK-SD-NOFP16-NEXT: fcvtl v1.4s, v1.4h
1392
- ; CHECK-SD-NOFP16-NEXT: ldr s4, [sp, #24]
1393
- ; CHECK-SD-NOFP16-NEXT: add x9, sp, #32
1394
- ; CHECK-SD-NOFP16-NEXT: ld1 { v4.s }[1], [x9]
1395
- ; CHECK-SD-NOFP16-NEXT: add x9, sp, #16
1396
- ; CHECK-SD-NOFP16-NEXT: fcmgt v2.4s, v3.4s, v2.4s
1397
- ; CHECK-SD-NOFP16-NEXT: fmov s3, w4
1382
+ ; CHECK-SD-NOFP16-NEXT: fmov s5, w4
1383
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v6.4s, v0.4h
1384
+ ; CHECK-SD-NOFP16-NEXT: ldr s3, [sp, #24]
1385
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v7.4s, v1.4h
1386
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v0.4s, v0.8h
1387
+ ; CHECK-SD-NOFP16-NEXT: add x9, sp, #8
1388
+ ; CHECK-SD-NOFP16-NEXT: mov v2.s[1], w1
1389
+ ; CHECK-SD-NOFP16-NEXT: ld1 { v4.s }[1], [x8]
1390
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v1.4s, v1.8h
1391
+ ; CHECK-SD-NOFP16-NEXT: mov v5.s[1], w5
1392
+ ; CHECK-SD-NOFP16-NEXT: add x8, sp, #32
1393
+ ; CHECK-SD-NOFP16-NEXT: ld1 { v3.s }[1], [x8]
1394
+ ; CHECK-SD-NOFP16-NEXT: add x8, sp, #16
1395
+ ; CHECK-SD-NOFP16-NEXT: fcmgt v6.4s, v7.4s, v6.4s
1396
+ ; CHECK-SD-NOFP16-NEXT: ld1 { v4.s }[2], [x9]
1397
+ ; CHECK-SD-NOFP16-NEXT: add x9, sp, #40
1398
+ ; CHECK-SD-NOFP16-NEXT: mov v2.s[2], w2
1398
1399
; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v1.4s, v0.4s
1399
- ; CHECK-SD-NOFP16-NEXT: fmov s1, w0
1400
- ; CHECK-SD-NOFP16-NEXT: mov v3.s[1], w5
1401
- ; CHECK-SD-NOFP16-NEXT: mov v1.s[1], w1
1402
- ; CHECK-SD-NOFP16-NEXT: uzp1 v0.8h, v0.8h, v2.8h
1403
- ; CHECK-SD-NOFP16-NEXT: fmov s2, w7
1404
- ; CHECK-SD-NOFP16-NEXT: mov v3.s[2], w6
1405
- ; CHECK-SD-NOFP16-NEXT: ld1 { v2.s }[1], [x8]
1406
- ; CHECK-SD-NOFP16-NEXT: mov v1.s[2], w2
1407
- ; CHECK-SD-NOFP16-NEXT: add x8, sp, #8
1408
- ; CHECK-SD-NOFP16-NEXT: shl v0.8h, v0.8h, #15
1409
- ; CHECK-SD-NOFP16-NEXT: ld1 { v2.s }[2], [x8]
1410
- ; CHECK-SD-NOFP16-NEXT: add x8, sp, #40
1411
- ; CHECK-SD-NOFP16-NEXT: cmlt v0.8h, v0.8h, #0
1412
- ; CHECK-SD-NOFP16-NEXT: mov v1.s[3], w3
1413
- ; CHECK-SD-NOFP16-NEXT: ld1 { v4.s }[2], [x8]
1414
- ; CHECK-SD-NOFP16-NEXT: ld1 { v2.s }[3], [x9]
1415
- ; CHECK-SD-NOFP16-NEXT: sshll v5.4s, v0.4h, #0
1416
- ; CHECK-SD-NOFP16-NEXT: sshll2 v0.4s, v0.8h, #0
1417
- ; CHECK-SD-NOFP16-NEXT: bif v1.16b, v2.16b, v5.16b
1418
- ; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v3.16b, v4.16b
1400
+ ; CHECK-SD-NOFP16-NEXT: mov v5.s[2], w6
1401
+ ; CHECK-SD-NOFP16-NEXT: ld1 { v3.s }[2], [x9]
1402
+ ; CHECK-SD-NOFP16-NEXT: ld1 { v4.s }[3], [x8]
1403
+ ; CHECK-SD-NOFP16-NEXT: mov v1.16b, v6.16b
1404
+ ; CHECK-SD-NOFP16-NEXT: mov v2.s[3], w3
1405
+ ; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v5.16b, v3.16b
1406
+ ; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v2.16b, v4.16b
1407
+ ; CHECK-SD-NOFP16-NEXT: mov w5, v0.s[1]
1408
+ ; CHECK-SD-NOFP16-NEXT: mov w6, v0.s[2]
1409
+ ; CHECK-SD-NOFP16-NEXT: fmov w4, s0
1419
1410
; CHECK-SD-NOFP16-NEXT: mov w1, v1.s[1]
1420
1411
; CHECK-SD-NOFP16-NEXT: mov w2, v1.s[2]
1421
1412
; CHECK-SD-NOFP16-NEXT: mov w3, v1.s[3]
1422
- ; CHECK-SD-NOFP16-NEXT: mov w5, v0.s[1]
1423
- ; CHECK-SD-NOFP16-NEXT: mov w6, v0.s[2]
1424
1413
; CHECK-SD-NOFP16-NEXT: fmov w0, s1
1425
- ; CHECK-SD-NOFP16-NEXT: fmov w4, s0
1426
1414
; CHECK-SD-NOFP16-NEXT: ret
1427
1415
;
1428
1416
; CHECK-SD-FP16-LABEL: v7f16_i32:
@@ -1630,17 +1618,12 @@ entry:
1630
1618
define <8 x i32 > @v8f16_i32 (<8 x half > %a , <8 x half > %b , <8 x i32 > %d , <8 x i32 > %e ) {
1631
1619
; CHECK-SD-NOFP16-LABEL: v8f16_i32:
1632
1620
; CHECK-SD-NOFP16: // %bb.0: // %entry
1633
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v6.4s, v0.8h
1634
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v7.4s, v1.8h
1635
- ; CHECK-SD-NOFP16-NEXT: fcvtl v0.4s, v0.4h
1636
- ; CHECK-SD-NOFP16-NEXT: fcvtl v1.4s, v1.4h
1621
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v6.4s, v0.4h
1622
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v7.4s, v1.4h
1623
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v0.4s, v0.8h
1624
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v1.4s, v1.8h
1637
1625
; CHECK-SD-NOFP16-NEXT: fcmgt v6.4s, v7.4s, v6.4s
1638
1626
; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v1.4s, v0.4s
1639
- ; CHECK-SD-NOFP16-NEXT: uzp1 v0.8h, v0.8h, v6.8h
1640
- ; CHECK-SD-NOFP16-NEXT: shl v0.8h, v0.8h, #15
1641
- ; CHECK-SD-NOFP16-NEXT: cmlt v0.8h, v0.8h, #0
1642
- ; CHECK-SD-NOFP16-NEXT: sshll v6.4s, v0.4h, #0
1643
- ; CHECK-SD-NOFP16-NEXT: sshll2 v0.4s, v0.8h, #0
1644
1627
; CHECK-SD-NOFP16-NEXT: mov v1.16b, v0.16b
1645
1628
; CHECK-SD-NOFP16-NEXT: mov v0.16b, v6.16b
1646
1629
; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v3.16b, v5.16b
@@ -1694,37 +1677,24 @@ entry:
1694
1677
define <16 x i32 > @v16f16_i32 (<16 x half > %a , <16 x half > %b , <16 x i32 > %d , <16 x i32 > %e ) {
1695
1678
; CHECK-SD-NOFP16-LABEL: v16f16_i32:
1696
1679
; CHECK-SD-NOFP16: // %bb.0: // %entry
1697
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v17.4s, v0.8h
1698
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v18.4s, v2.8h
1699
- ; CHECK-SD-NOFP16-NEXT: fcvtl v0.4s, v0.4h
1700
- ; CHECK-SD-NOFP16-NEXT: fcvtl v2.4s, v2.4h
1701
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v16.4s, v1.8h
1702
- ; CHECK-SD-NOFP16-NEXT: fcvtl2 v19.4s, v3.8h
1703
- ; CHECK-SD-NOFP16-NEXT: fcvtl v1.4s, v1.4h
1704
- ; CHECK-SD-NOFP16-NEXT: fcvtl v3.4s, v3.4h
1705
- ; CHECK-SD-NOFP16-NEXT: fcmgt v17.4s, v18.4s, v17.4s
1706
- ; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v2.4s, v0.4s
1707
- ; CHECK-SD-NOFP16-NEXT: fcmgt v2.4s, v19.4s, v16.4s
1708
- ; CHECK-SD-NOFP16-NEXT: fcmgt v1.4s, v3.4s, v1.4s
1709
- ; CHECK-SD-NOFP16-NEXT: ldp q18, q19, [sp, #32]
1710
- ; CHECK-SD-NOFP16-NEXT: uzp1 v0.8h, v0.8h, v17.8h
1711
- ; CHECK-SD-NOFP16-NEXT: uzp1 v1.8h, v1.8h, v2.8h
1712
- ; CHECK-SD-NOFP16-NEXT: ldp q2, q20, [sp]
1713
- ; CHECK-SD-NOFP16-NEXT: shl v0.8h, v0.8h, #15
1714
- ; CHECK-SD-NOFP16-NEXT: shl v1.8h, v1.8h, #15
1715
- ; CHECK-SD-NOFP16-NEXT: cmlt v0.8h, v0.8h, #0
1716
- ; CHECK-SD-NOFP16-NEXT: cmlt v1.8h, v1.8h, #0
1717
- ; CHECK-SD-NOFP16-NEXT: sshll v3.4s, v0.4h, #0
1718
- ; CHECK-SD-NOFP16-NEXT: sshll v16.4s, v1.4h, #0
1719
- ; CHECK-SD-NOFP16-NEXT: sshll2 v17.4s, v1.8h, #0
1720
- ; CHECK-SD-NOFP16-NEXT: sshll2 v1.4s, v0.8h, #0
1721
- ; CHECK-SD-NOFP16-NEXT: mov v0.16b, v3.16b
1722
- ; CHECK-SD-NOFP16-NEXT: mov v3.16b, v17.16b
1723
- ; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v5.16b, v20.16b
1724
- ; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v4.16b, v2.16b
1725
- ; CHECK-SD-NOFP16-NEXT: mov v2.16b, v16.16b
1726
- ; CHECK-SD-NOFP16-NEXT: bsl v3.16b, v7.16b, v19.16b
1727
- ; CHECK-SD-NOFP16-NEXT: bsl v2.16b, v6.16b, v18.16b
1680
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v16.4s, v1.4h
1681
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v17.4s, v3.4h
1682
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v18.4s, v0.4h
1683
+ ; CHECK-SD-NOFP16-NEXT: fcvtl v19.4s, v2.4h
1684
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v1.4s, v1.8h
1685
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v3.4s, v3.8h
1686
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v0.4s, v0.8h
1687
+ ; CHECK-SD-NOFP16-NEXT: fcvtl2 v2.4s, v2.8h
1688
+ ; CHECK-SD-NOFP16-NEXT: fcmgt v16.4s, v17.4s, v16.4s
1689
+ ; CHECK-SD-NOFP16-NEXT: fcmgt v18.4s, v19.4s, v18.4s
1690
+ ; CHECK-SD-NOFP16-NEXT: fcmgt v3.4s, v3.4s, v1.4s
1691
+ ; CHECK-SD-NOFP16-NEXT: fcmgt v1.4s, v2.4s, v0.4s
1692
+ ; CHECK-SD-NOFP16-NEXT: ldp q0, q19, [sp]
1693
+ ; CHECK-SD-NOFP16-NEXT: ldp q2, q17, [sp, #32]
1694
+ ; CHECK-SD-NOFP16-NEXT: bit v0.16b, v4.16b, v18.16b
1695
+ ; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v5.16b, v19.16b
1696
+ ; CHECK-SD-NOFP16-NEXT: bsl v3.16b, v7.16b, v17.16b
1697
+ ; CHECK-SD-NOFP16-NEXT: bit v2.16b, v6.16b, v16.16b
1728
1698
; CHECK-SD-NOFP16-NEXT: ret
1729
1699
;
1730
1700
; CHECK-SD-FP16-LABEL: v16f16_i32:
0 commit comments