@@ -1450,6 +1450,70 @@ entry:
14501450 ret void
14511451}
14521452
1453+ define half @trunc (fp128 %a ) unnamed_addr {
1454+ ; CHECK-LABEL: trunc:
1455+ ; CHECK: # %bb.0: # %entry
1456+ ; CHECK-NEXT: mflr r0
1457+ ; CHECK-NEXT: stdu r1, -32(r1)
1458+ ; CHECK-NEXT: std r0, 48(r1)
1459+ ; CHECK-NEXT: .cfi_def_cfa_offset 32
1460+ ; CHECK-NEXT: .cfi_offset lr, 16
1461+ ; CHECK-NEXT: bl __trunctfhf2
1462+ ; CHECK-NEXT: nop
1463+ ; CHECK-NEXT: clrlwi r3, r3, 16
1464+ ; CHECK-NEXT: mtfprwz f0, r3
1465+ ; CHECK-NEXT: xscvhpdp f1, f0
1466+ ; CHECK-NEXT: addi r1, r1, 32
1467+ ; CHECK-NEXT: ld r0, 16(r1)
1468+ ; CHECK-NEXT: mtlr r0
1469+ ; CHECK-NEXT: blr
1470+ ;
1471+ ; CHECK-P8-LABEL: trunc:
1472+ ; CHECK-P8: # %bb.0: # %entry
1473+ ; CHECK-P8-NEXT: mflr r0
1474+ ; CHECK-P8-NEXT: stdu r1, -32(r1)
1475+ ; CHECK-P8-NEXT: std r0, 48(r1)
1476+ ; CHECK-P8-NEXT: .cfi_def_cfa_offset 32
1477+ ; CHECK-P8-NEXT: .cfi_offset lr, 16
1478+ ; CHECK-P8-NEXT: bl __trunctfhf2
1479+ ; CHECK-P8-NEXT: nop
1480+ ; CHECK-P8-NEXT: clrldi r3, r3, 48
1481+ ; CHECK-P8-NEXT: bl __gnu_h2f_ieee
1482+ ; CHECK-P8-NEXT: nop
1483+ ; CHECK-P8-NEXT: addi r1, r1, 32
1484+ ; CHECK-P8-NEXT: ld r0, 16(r1)
1485+ ; CHECK-P8-NEXT: mtlr r0
1486+ ; CHECK-P8-NEXT: blr
1487+ entry:
1488+ %0 = fptrunc fp128 %a to half
1489+ ret half %0
1490+ }
1491+
1492+ define fp128 @ext (half %a ) unnamed_addr {
1493+ ; CHECK-LABEL: ext:
1494+ ; CHECK: # %bb.0: # %entry
1495+ ; CHECK-NEXT: xscpsgndp v2, f1, f1
1496+ ; CHECK-NEXT: xscvdpqp v2, v2
1497+ ; CHECK-NEXT: blr
1498+ ;
1499+ ; CHECK-P8-LABEL: ext:
1500+ ; CHECK-P8: # %bb.0: # %entry
1501+ ; CHECK-P8-NEXT: mflr r0
1502+ ; CHECK-P8-NEXT: stdu r1, -32(r1)
1503+ ; CHECK-P8-NEXT: std r0, 48(r1)
1504+ ; CHECK-P8-NEXT: .cfi_def_cfa_offset 32
1505+ ; CHECK-P8-NEXT: .cfi_offset lr, 16
1506+ ; CHECK-P8-NEXT: bl __extendsfkf2
1507+ ; CHECK-P8-NEXT: nop
1508+ ; CHECK-P8-NEXT: addi r1, r1, 32
1509+ ; CHECK-P8-NEXT: ld r0, 16(r1)
1510+ ; CHECK-P8-NEXT: mtlr r0
1511+ ; CHECK-P8-NEXT: blr
1512+ entry:
1513+ %0 = fpext half %a to fp128
1514+ ret fp128 %0
1515+ }
1516+
14531517@f128Glob = common global fp128 0xL00000000000000000000000000000000, align 16
14541518
14551519; Function Attrs: norecurse nounwind readnone
0 commit comments