@@ -1145,8 +1145,6 @@ define <7 x half> @v7f16_half(<7 x half> %a, <7 x half> %b, <7 x half> %d, <7 x
11451145; CHECK-SD-NOFP16-NEXT: fcmgt v4.4s, v5.4s, v4.4s
11461146; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v1.4s, v0.4s
11471147; 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
11501148; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v2.16b, v3.16b
11511149; CHECK-SD-NOFP16-NEXT: ret
11521150;
@@ -1275,8 +1273,6 @@ define <8 x half> @v8f16_half(<8 x half> %a, <8 x half> %b, <8 x half> %d, <8 x
12751273; CHECK-SD-NOFP16-NEXT: fcmgt v4.4s, v5.4s, v4.4s
12761274; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v1.4s, v0.4s
12771275; 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
12801276; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v2.16b, v3.16b
12811277; CHECK-SD-NOFP16-NEXT: ret
12821278;
@@ -1328,10 +1324,6 @@ define <16 x half> @v16f16_half(<16 x half> %a, <16 x half> %b, <16 x half> %d,
13281324; CHECK-SD-NOFP16-NEXT: fcmgt v0.4s, v2.4s, v0.4s
13291325; CHECK-SD-NOFP16-NEXT: uzp1 v1.8h, v1.8h, v16.8h
13301326; 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
13351327; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v5.16b, v7.16b
13361328; CHECK-SD-NOFP16-NEXT: bsl v0.16b, v4.16b, v6.16b
13371329; CHECK-SD-NOFP16-NEXT: ret
@@ -1384,45 +1376,41 @@ entry:
13841376define <7 x i32 > @v7f16_i32 (<7 x half > %a , <7 x half > %b , <7 x i32 > %d , <7 x i32 > %e ) {
13851377; CHECK-SD-NOFP16-LABEL: v7f16_i32:
13861378; 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
13891381; 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
13981399; 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
14191410; CHECK-SD-NOFP16-NEXT: mov w1, v1.s[1]
14201411; CHECK-SD-NOFP16-NEXT: mov w2, v1.s[2]
14211412; 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]
14241413; CHECK-SD-NOFP16-NEXT: fmov w0, s1
1425- ; CHECK-SD-NOFP16-NEXT: fmov w4, s0
14261414; CHECK-SD-NOFP16-NEXT: ret
14271415;
14281416; CHECK-SD-FP16-LABEL: v7f16_i32:
@@ -1630,17 +1618,12 @@ entry:
16301618define <8 x i32 > @v8f16_i32 (<8 x half > %a , <8 x half > %b , <8 x i32 > %d , <8 x i32 > %e ) {
16311619; CHECK-SD-NOFP16-LABEL: v8f16_i32:
16321620; 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
16371625; CHECK-SD-NOFP16-NEXT: fcmgt v6.4s, v7.4s, v6.4s
16381626; 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
16441627; CHECK-SD-NOFP16-NEXT: mov v1.16b, v0.16b
16451628; CHECK-SD-NOFP16-NEXT: mov v0.16b, v6.16b
16461629; CHECK-SD-NOFP16-NEXT: bsl v1.16b, v3.16b, v5.16b
@@ -1694,37 +1677,24 @@ entry:
16941677define <16 x i32 > @v16f16_i32 (<16 x half > %a , <16 x half > %b , <16 x i32 > %d , <16 x i32 > %e ) {
16951678; CHECK-SD-NOFP16-LABEL: v16f16_i32:
16961679; 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
17281698; CHECK-SD-NOFP16-NEXT: ret
17291699;
17301700; CHECK-SD-FP16-LABEL: v16f16_i32:
0 commit comments