@@ -419,6 +419,60 @@ entry:
419419}
420420declare fp128 @llvm.cos.f128 (fp128 %Val )
421421
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+
422476define fp128 @qp_log (ptr nocapture readonly %a ) {
423477; CHECK-LABEL: qp_log:
424478; CHECK: # %bb.0: # %entry
0 commit comments