@@ -1306,3 +1306,58 @@ entry:
1306
1306
ret void
1307
1307
}
1308
1308
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