@@ -419,6 +419,60 @@ entry:
419
419
}
420
420
declare fp128 @llvm.cos.f128 (fp128 %Val )
421
421
422
+ define fp128 @qp_sincos (ptr nocapture readonly %a ) nounwind {
423
+ ; CHECK-LABEL: qp_sincos:
424
+ ; CHECK: # %bb.0: # %entry
425
+ ; CHECK-NEXT: mflr r0
426
+ ; CHECK-NEXT: stdu r1, -64(r1)
427
+ ; CHECK-NEXT: std r0, 80(r1)
428
+ ; CHECK-NEXT: addi r5, r1, 48
429
+ ; CHECK-NEXT: addi r6, r1, 32
430
+ ; CHECK-NEXT: lxv v2, 0(r3)
431
+ ; CHECK-NEXT: bl sincosf128
432
+ ; CHECK-NEXT: nop
433
+ ; CHECK-NEXT: lxv v2, 48(r1)
434
+ ; CHECK-NEXT: lxv v3, 32(r1)
435
+ ; CHECK-NEXT: xsmulqp v2, v3, v2
436
+ ; CHECK-NEXT: addi r1, r1, 64
437
+ ; CHECK-NEXT: ld r0, 16(r1)
438
+ ; CHECK-NEXT: mtlr r0
439
+ ; CHECK-NEXT: blr
440
+ ;
441
+ ; CHECK-P8-LABEL: qp_sincos:
442
+ ; CHECK-P8: # %bb.0: # %entry
443
+ ; CHECK-P8-NEXT: mflr r0
444
+ ; CHECK-P8-NEXT: std r29, -24(r1) # 8-byte Folded Spill
445
+ ; CHECK-P8-NEXT: std r30, -16(r1) # 8-byte Folded Spill
446
+ ; CHECK-P8-NEXT: stdu r1, -96(r1)
447
+ ; CHECK-P8-NEXT: std r0, 112(r1)
448
+ ; CHECK-P8-NEXT: addi r30, r1, 48
449
+ ; CHECK-P8-NEXT: addi r29, r1, 32
450
+ ; CHECK-P8-NEXT: lxvd2x vs0, 0, r3
451
+ ; CHECK-P8-NEXT: mr r5, r30
452
+ ; CHECK-P8-NEXT: mr r6, r29
453
+ ; CHECK-P8-NEXT: xxswapd v2, vs0
454
+ ; CHECK-P8-NEXT: bl sincosf128
455
+ ; CHECK-P8-NEXT: nop
456
+ ; CHECK-P8-NEXT: lxvd2x vs0, 0, r29
457
+ ; CHECK-P8-NEXT: xxswapd v2, vs0
458
+ ; CHECK-P8-NEXT: lxvd2x vs0, 0, r30
459
+ ; CHECK-P8-NEXT: xxswapd v3, vs0
460
+ ; CHECK-P8-NEXT: bl __mulkf3
461
+ ; CHECK-P8-NEXT: nop
462
+ ; CHECK-P8-NEXT: addi r1, r1, 96
463
+ ; CHECK-P8-NEXT: ld r0, 16(r1)
464
+ ; CHECK-P8-NEXT: ld r30, -16(r1) # 8-byte Folded Reload
465
+ ; CHECK-P8-NEXT: ld r29, -24(r1) # 8-byte Folded Reload
466
+ ; CHECK-P8-NEXT: mtlr r0
467
+ ; CHECK-P8-NEXT: blr
468
+ entry:
469
+ %0 = load fp128 , ptr %a , align 16
470
+ %1 = tail call fp128 @llvm.cos.f128 (fp128 %0 )
471
+ %2 = tail call fp128 @llvm.sin.f128 (fp128 %0 )
472
+ %3 = fmul fp128 %1 , %2
473
+ ret fp128 %3
474
+ }
475
+
422
476
define fp128 @qp_log (ptr nocapture readonly %a ) {
423
477
; CHECK-LABEL: qp_log:
424
478
; CHECK: # %bb.0: # %entry
0 commit comments