Skip to content

Commit cc75c08

Browse files
committed
Add stofp_v3i128_v3f64 and utofp_v3i128_v3f64 back
1 parent 0c79486 commit cc75c08

File tree

1 file changed

+154
-0
lines changed

1 file changed

+154
-0
lines changed

llvm/test/CodeGen/AArch64/itofp.ll

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,160 @@ entry:
13061306
ret <2 x double> %c
13071307
}
13081308

1309+
define <3 x double> @stofp_v3i128_v3f64(<3 x i128> %a) {
1310+
; CHECK-SD-LABEL: stofp_v3i128_v3f64:
1311+
; CHECK-SD: // %bb.0: // %entry
1312+
; CHECK-SD-NEXT: stp d9, d8, [sp, #-64]! // 16-byte Folded Spill
1313+
; CHECK-SD-NEXT: str x30, [sp, #16] // 8-byte Folded Spill
1314+
; CHECK-SD-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill
1315+
; CHECK-SD-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill
1316+
; CHECK-SD-NEXT: .cfi_def_cfa_offset 64
1317+
; CHECK-SD-NEXT: .cfi_offset w19, -8
1318+
; CHECK-SD-NEXT: .cfi_offset w20, -16
1319+
; CHECK-SD-NEXT: .cfi_offset w21, -24
1320+
; CHECK-SD-NEXT: .cfi_offset w22, -32
1321+
; CHECK-SD-NEXT: .cfi_offset w30, -48
1322+
; CHECK-SD-NEXT: .cfi_offset b8, -56
1323+
; CHECK-SD-NEXT: .cfi_offset b9, -64
1324+
; CHECK-SD-NEXT: mov x19, x5
1325+
; CHECK-SD-NEXT: mov x20, x4
1326+
; CHECK-SD-NEXT: mov x21, x3
1327+
; CHECK-SD-NEXT: mov x22, x2
1328+
; CHECK-SD-NEXT: bl __floattidf
1329+
; CHECK-SD-NEXT: mov x0, x22
1330+
; CHECK-SD-NEXT: mov x1, x21
1331+
; CHECK-SD-NEXT: fmov d8, d0
1332+
; CHECK-SD-NEXT: bl __floattidf
1333+
; CHECK-SD-NEXT: mov x0, x20
1334+
; CHECK-SD-NEXT: mov x1, x19
1335+
; CHECK-SD-NEXT: fmov d9, d0
1336+
; CHECK-SD-NEXT: bl __floattidf
1337+
; CHECK-SD-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload
1338+
; CHECK-SD-NEXT: fmov d2, d0
1339+
; CHECK-SD-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload
1340+
; CHECK-SD-NEXT: fmov d0, d8
1341+
; CHECK-SD-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload
1342+
; CHECK-SD-NEXT: fmov d1, d9
1343+
; CHECK-SD-NEXT: ldp d9, d8, [sp], #64 // 16-byte Folded Reload
1344+
; CHECK-SD-NEXT: ret
1345+
;
1346+
; CHECK-GI-LABEL: stofp_v3i128_v3f64:
1347+
; CHECK-GI: // %bb.0: // %entry
1348+
; CHECK-GI-NEXT: stp d9, d8, [sp, #-64]! // 16-byte Folded Spill
1349+
; CHECK-GI-NEXT: str x30, [sp, #16] // 8-byte Folded Spill
1350+
; CHECK-GI-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill
1351+
; CHECK-GI-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill
1352+
; CHECK-GI-NEXT: .cfi_def_cfa_offset 64
1353+
; CHECK-GI-NEXT: .cfi_offset w19, -8
1354+
; CHECK-GI-NEXT: .cfi_offset w20, -16
1355+
; CHECK-GI-NEXT: .cfi_offset w21, -24
1356+
; CHECK-GI-NEXT: .cfi_offset w22, -32
1357+
; CHECK-GI-NEXT: .cfi_offset w30, -48
1358+
; CHECK-GI-NEXT: .cfi_offset b8, -56
1359+
; CHECK-GI-NEXT: .cfi_offset b9, -64
1360+
; CHECK-GI-NEXT: mov x19, x2
1361+
; CHECK-GI-NEXT: mov x20, x3
1362+
; CHECK-GI-NEXT: mov x21, x4
1363+
; CHECK-GI-NEXT: mov x22, x5
1364+
; CHECK-GI-NEXT: bl __floattidf
1365+
; CHECK-GI-NEXT: mov x0, x19
1366+
; CHECK-GI-NEXT: mov x1, x20
1367+
; CHECK-GI-NEXT: fmov d8, d0
1368+
; CHECK-GI-NEXT: bl __floattidf
1369+
; CHECK-GI-NEXT: mov x0, x21
1370+
; CHECK-GI-NEXT: mov x1, x22
1371+
; CHECK-GI-NEXT: fmov d9, d0
1372+
; CHECK-GI-NEXT: bl __floattidf
1373+
; CHECK-GI-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload
1374+
; CHECK-GI-NEXT: fmov d2, d0
1375+
; CHECK-GI-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload
1376+
; CHECK-GI-NEXT: fmov d0, d8
1377+
; CHECK-GI-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload
1378+
; CHECK-GI-NEXT: fmov d1, d9
1379+
; CHECK-GI-NEXT: ldp d9, d8, [sp], #64 // 16-byte Folded Reload
1380+
; CHECK-GI-NEXT: ret
1381+
entry:
1382+
%c = sitofp <3 x i128> %a to <3 x double>
1383+
ret <3 x double> %c
1384+
}
1385+
1386+
define <3 x double> @utofp_v3i128_v3f64(<3 x i128> %a) {
1387+
; CHECK-SD-LABEL: utofp_v3i128_v3f64:
1388+
; CHECK-SD: // %bb.0: // %entry
1389+
; CHECK-SD-NEXT: stp d9, d8, [sp, #-64]! // 16-byte Folded Spill
1390+
; CHECK-SD-NEXT: str x30, [sp, #16] // 8-byte Folded Spill
1391+
; CHECK-SD-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill
1392+
; CHECK-SD-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill
1393+
; CHECK-SD-NEXT: .cfi_def_cfa_offset 64
1394+
; CHECK-SD-NEXT: .cfi_offset w19, -8
1395+
; CHECK-SD-NEXT: .cfi_offset w20, -16
1396+
; CHECK-SD-NEXT: .cfi_offset w21, -24
1397+
; CHECK-SD-NEXT: .cfi_offset w22, -32
1398+
; CHECK-SD-NEXT: .cfi_offset w30, -48
1399+
; CHECK-SD-NEXT: .cfi_offset b8, -56
1400+
; CHECK-SD-NEXT: .cfi_offset b9, -64
1401+
; CHECK-SD-NEXT: mov x19, x5
1402+
; CHECK-SD-NEXT: mov x20, x4
1403+
; CHECK-SD-NEXT: mov x21, x3
1404+
; CHECK-SD-NEXT: mov x22, x2
1405+
; CHECK-SD-NEXT: bl __floatuntidf
1406+
; CHECK-SD-NEXT: mov x0, x22
1407+
; CHECK-SD-NEXT: mov x1, x21
1408+
; CHECK-SD-NEXT: fmov d8, d0
1409+
; CHECK-SD-NEXT: bl __floatuntidf
1410+
; CHECK-SD-NEXT: mov x0, x20
1411+
; CHECK-SD-NEXT: mov x1, x19
1412+
; CHECK-SD-NEXT: fmov d9, d0
1413+
; CHECK-SD-NEXT: bl __floatuntidf
1414+
; CHECK-SD-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload
1415+
; CHECK-SD-NEXT: fmov d2, d0
1416+
; CHECK-SD-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload
1417+
; CHECK-SD-NEXT: fmov d0, d8
1418+
; CHECK-SD-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload
1419+
; CHECK-SD-NEXT: fmov d1, d9
1420+
; CHECK-SD-NEXT: ldp d9, d8, [sp], #64 // 16-byte Folded Reload
1421+
; CHECK-SD-NEXT: ret
1422+
;
1423+
; CHECK-GI-LABEL: utofp_v3i128_v3f64:
1424+
; CHECK-GI: // %bb.0: // %entry
1425+
; CHECK-GI-NEXT: stp d9, d8, [sp, #-64]! // 16-byte Folded Spill
1426+
; CHECK-GI-NEXT: str x30, [sp, #16] // 8-byte Folded Spill
1427+
; CHECK-GI-NEXT: stp x22, x21, [sp, #32] // 16-byte Folded Spill
1428+
; CHECK-GI-NEXT: stp x20, x19, [sp, #48] // 16-byte Folded Spill
1429+
; CHECK-GI-NEXT: .cfi_def_cfa_offset 64
1430+
; CHECK-GI-NEXT: .cfi_offset w19, -8
1431+
; CHECK-GI-NEXT: .cfi_offset w20, -16
1432+
; CHECK-GI-NEXT: .cfi_offset w21, -24
1433+
; CHECK-GI-NEXT: .cfi_offset w22, -32
1434+
; CHECK-GI-NEXT: .cfi_offset w30, -48
1435+
; CHECK-GI-NEXT: .cfi_offset b8, -56
1436+
; CHECK-GI-NEXT: .cfi_offset b9, -64
1437+
; CHECK-GI-NEXT: mov x19, x2
1438+
; CHECK-GI-NEXT: mov x20, x3
1439+
; CHECK-GI-NEXT: mov x21, x4
1440+
; CHECK-GI-NEXT: mov x22, x5
1441+
; CHECK-GI-NEXT: bl __floatuntidf
1442+
; CHECK-GI-NEXT: mov x0, x19
1443+
; CHECK-GI-NEXT: mov x1, x20
1444+
; CHECK-GI-NEXT: fmov d8, d0
1445+
; CHECK-GI-NEXT: bl __floatuntidf
1446+
; CHECK-GI-NEXT: mov x0, x21
1447+
; CHECK-GI-NEXT: mov x1, x22
1448+
; CHECK-GI-NEXT: fmov d9, d0
1449+
; CHECK-GI-NEXT: bl __floatuntidf
1450+
; CHECK-GI-NEXT: ldp x20, x19, [sp, #48] // 16-byte Folded Reload
1451+
; CHECK-GI-NEXT: fmov d2, d0
1452+
; CHECK-GI-NEXT: ldp x22, x21, [sp, #32] // 16-byte Folded Reload
1453+
; CHECK-GI-NEXT: fmov d0, d8
1454+
; CHECK-GI-NEXT: ldr x30, [sp, #16] // 8-byte Folded Reload
1455+
; CHECK-GI-NEXT: fmov d1, d9
1456+
; CHECK-GI-NEXT: ldp d9, d8, [sp], #64 // 16-byte Folded Reload
1457+
; CHECK-GI-NEXT: ret
1458+
entry:
1459+
%c = uitofp <3 x i128> %a to <3 x double>
1460+
ret <3 x double> %c
1461+
}
1462+
13091463
define <2 x double> @stofp_v2i64_v2f64(<2 x i64> %a) {
13101464
; CHECK-LABEL: stofp_v2i64_v2f64:
13111465
; CHECK: // %bb.0: // %entry

0 commit comments

Comments
 (0)