Skip to content

Commit d199fd7

Browse files
committed
[NFC] Add f128 frexp intrinsics for PowerPC
1 parent af6ff98 commit d199fd7

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

llvm/test/CodeGen/PowerPC/f128-arith.ll

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,3 +1306,58 @@ entry:
13061306
ret void
13071307
}
13081308
declare fp128 @llvm.fma.f128(fp128, fp128, fp128)
1309+
1310+
define dso_local fp128 @qpFREXP(ptr %a, ptr %b) {
1311+
; CHECK-LABEL: qpFREXP:
1312+
; CHECK: # %bb.0: # %entry
1313+
; CHECK-NEXT: mflr r0
1314+
; CHECK-NEXT: .cfi_def_cfa_offset 64
1315+
; CHECK-NEXT: .cfi_offset lr, 16
1316+
; CHECK-NEXT: .cfi_offset r30, -16
1317+
; CHECK-NEXT: std r30, -16(r1) # 8-byte Folded Spill
1318+
; CHECK-NEXT: stdu r1, -64(r1)
1319+
; CHECK-NEXT: std r0, 80(r1)
1320+
; CHECK-NEXT: addi r5, r1, 44
1321+
; CHECK-NEXT: mr r30, r4
1322+
; CHECK-NEXT: lxv v2, 0(r3)
1323+
; CHECK-NEXT: bl frexpl
1324+
; CHECK-NEXT: nop
1325+
; CHECK-NEXT: lwz r3, 44(r1)
1326+
; CHECK-NEXT: stw r3, 0(r30)
1327+
; CHECK-NEXT: addi r1, r1, 64
1328+
; CHECK-NEXT: ld r0, 16(r1)
1329+
; CHECK-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
1330+
; CHECK-NEXT: mtlr r0
1331+
; CHECK-NEXT: blr
1332+
;
1333+
; CHECK-P8-LABEL: qpFREXP:
1334+
; CHECK-P8: # %bb.0: # %entry
1335+
; CHECK-P8-NEXT: mflr r0
1336+
; CHECK-P8-NEXT: .cfi_def_cfa_offset 64
1337+
; CHECK-P8-NEXT: .cfi_offset lr, 16
1338+
; CHECK-P8-NEXT: .cfi_offset r30, -16
1339+
; CHECK-P8-NEXT: std r30, -16(r1) # 8-byte Folded Spill
1340+
; CHECK-P8-NEXT: stdu r1, -64(r1)
1341+
; CHECK-P8-NEXT: std r0, 80(r1)
1342+
; CHECK-P8-NEXT: addi r5, r1, 44
1343+
; CHECK-P8-NEXT: mr r30, r4
1344+
; CHECK-P8-NEXT: lxvd2x vs0, 0, r3
1345+
; CHECK-P8-NEXT: xxswapd v2, vs0
1346+
; CHECK-P8-NEXT: bl frexpl
1347+
; CHECK-P8-NEXT: nop
1348+
; CHECK-P8-NEXT: lwz r3, 44(r1)
1349+
; CHECK-P8-NEXT: stw r3, 0(r30)
1350+
; CHECK-P8-NEXT: addi r1, r1, 64
1351+
; CHECK-P8-NEXT: ld r0, 16(r1)
1352+
; CHECK-P8-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
1353+
; CHECK-P8-NEXT: mtlr r0
1354+
; CHECK-P8-NEXT: blr
1355+
entry:
1356+
%0 = load fp128, ptr %a, align 16
1357+
%1 = tail call { fp128, i32 } @llvm.frexp.f128.i32(fp128 %0)
1358+
%2 = extractvalue { fp128, i32 } %1, 1
1359+
store i32 %2, ptr %b, align 4
1360+
%3 = extractvalue { fp128, i32 } %1, 0
1361+
ret fp128 %3
1362+
}
1363+
declare { fp128, i32 } @llvm.frexp.f128.i32(fp128)

0 commit comments

Comments
 (0)