; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mcpu=pwr7 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN:   -mtriple=powerpc64-unknown-unknown -verify-machineinstrs < %s | \
; RUN:   FileCheck %s --check-prefix=BE
; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN:   -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s | \
; RUN:   FileCheck %s
; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \
; RUN:   -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s \
; RUN:   --enable-unsafe-fp-math | FileCheck %s --check-prefix=FAST
define dso_local i64 @test_lrint(double %d) local_unnamed_addr {
; BE-LABEL: test_lrint:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl lrint
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_lrint:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl lrint
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_lrint:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    fctid f0, f1
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.lrint.i64.f64(double %d)
  ret i64 %0
}

declare i64 @llvm.lrint.i64.f64(double)

define dso_local i64 @test_lrintf(float %f) local_unnamed_addr {
; BE-LABEL: test_lrintf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl lrintf
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_lrintf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl lrintf
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_lrintf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    fctid f0, f1
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.lrint.i64.f32(float %f)
  ret i64 %0
}

declare i64 @llvm.lrint.i64.f32(float)

define dso_local i64 @test_llrint(double %d) local_unnamed_addr {
; BE-LABEL: test_llrint:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl llrint
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_llrint:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl llrint
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_llrint:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    fctid f0, f1
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.llrint.i64.f64(double %d)
  ret i64 %0
}

declare i64 @llvm.llrint.i64.f64(double)

define dso_local i64 @test_llrintf(float %f) local_unnamed_addr {
; BE-LABEL: test_llrintf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl llrintf
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_llrintf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl llrintf
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_llrintf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    fctid f0, f1
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.llrint.i64.f32(float %f)
  ret i64 %0
}

declare i64 @llvm.llrint.i64.f32(float)

define dso_local i64 @test_lround(double %d) local_unnamed_addr {
; BE-LABEL: test_lround:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl lround
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_lround:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl lround
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_lround:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpi f0, f1
; FAST-NEXT:    fctid f0, f0
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.lround.i64.f64(double %d)
  ret i64 %0
}

declare i64 @llvm.lround.i64.f64(double)

define dso_local i64 @test_lroundf(float %f) local_unnamed_addr {
; BE-LABEL: test_lroundf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl lroundf
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_lroundf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl lroundf
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_lroundf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpi f0, f1
; FAST-NEXT:    fctid f0, f0
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.lround.i64.f32(float %f)
  ret i64 %0
}

declare i64 @llvm.lround.i64.f32(float)

define dso_local i64 @test_llround(double %d) local_unnamed_addr {
; BE-LABEL: test_llround:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl llround
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_llround:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl llround
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_llround:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpi f0, f1
; FAST-NEXT:    fctid f0, f0
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.llround.i64.f64(double %d)
  ret i64 %0
}

declare i64 @llvm.llround.i64.f64(double)

define dso_local i64 @test_llroundf(float %f) local_unnamed_addr {
; BE-LABEL: test_llroundf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    mflr r0
; BE-NEXT:    std r0, 16(r1)
; BE-NEXT:    stdu r1, -112(r1)
; BE-NEXT:    .cfi_def_cfa_offset 112
; BE-NEXT:    .cfi_offset lr, 16
; BE-NEXT:    bl llroundf
; BE-NEXT:    nop
; BE-NEXT:    addi r1, r1, 112
; BE-NEXT:    ld r0, 16(r1)
; BE-NEXT:    mtlr r0
; BE-NEXT:    blr
;
; CHECK-LABEL: test_llroundf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    mflr r0
; CHECK-NEXT:    std r0, 16(r1)
; CHECK-NEXT:    stdu r1, -32(r1)
; CHECK-NEXT:    .cfi_def_cfa_offset 32
; CHECK-NEXT:    .cfi_offset lr, 16
; CHECK-NEXT:    bl llroundf
; CHECK-NEXT:    nop
; CHECK-NEXT:    addi r1, r1, 32
; CHECK-NEXT:    ld r0, 16(r1)
; CHECK-NEXT:    mtlr r0
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_llroundf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpi f0, f1
; FAST-NEXT:    fctid f0, f0
; FAST-NEXT:    mffprd r3, f0
; FAST-NEXT:    blr
entry:
  %0 = tail call i64 @llvm.llround.i64.f32(float %f)
  ret i64 %0
}

declare i64 @llvm.llround.i64.f32(float)

define dso_local double @test_nearbyint(double %d) local_unnamed_addr {
; BE-LABEL: test_nearbyint:
; BE:    # %bb.0: # %entry
; BE:    bl nearbyint
; BE:    blr
;
; CHECK-LABEL: test_nearbyint:
; CHECK:    # %bb.0: # %entry
; CHECK:    bl nearbyint
; CHECK:    blr
;
; FAST-LABEL: test_nearbyint:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpic f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call double @llvm.nearbyint.f64(double %d)
  ret double %0
}

declare double @llvm.nearbyint.f64(double)

define dso_local float @test_nearbyintf(float %f) local_unnamed_addr {
; BE-LABEL: test_nearbyintf:
; BE:    # %bb.0: # %entry
; BE:    bl nearbyint
; BE:    blr
;
; CHECK-LABEL: test_nearbyintf:
; CHECK:    # %bb.0: # %entry
; CHECK:    bl nearbyintf
; CHECK:    blr
;
; FAST-LABEL: test_nearbyintf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpic f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call float @llvm.nearbyint.f32(float %f)
  ret float %0
}

declare float @llvm.nearbyint.f32(float)

define dso_local double @test_round(double %d) local_unnamed_addr {
; BE-LABEL: test_round:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpi f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_round:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpi f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_round:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpi f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call double @llvm.round.f64(double %d)
  ret double %0
}

declare double @llvm.round.f64(double)

define dso_local float @test_roundf(float %f) local_unnamed_addr {
; BE-LABEL: test_roundf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpi f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_roundf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpi f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_roundf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpi f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call float @llvm.round.f32(float %f)
  ret float %0
}

declare float @llvm.round.f32(float)

define dso_local double @test_trunc(double %d) local_unnamed_addr {
; BE-LABEL: test_trunc:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpiz f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_trunc:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpiz f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_trunc:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpiz f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call double @llvm.trunc.f64(double %d)
  ret double %0
}

declare double @llvm.trunc.f64(double)

define dso_local float @test_truncf(float %f) local_unnamed_addr {
; BE-LABEL: test_truncf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpiz f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_truncf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpiz f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_truncf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpiz f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call float @llvm.trunc.f32(float %f)
  ret float %0
}

declare float @llvm.trunc.f32(float)

define dso_local double @test_floor(double %d) local_unnamed_addr {
; BE-LABEL: test_floor:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpim f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_floor:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpim f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_floor:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpim f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call double @llvm.floor.f64(double %d)
  ret double %0
}

declare double @llvm.floor.f64(double)

define dso_local float @test_floorf(float %f) local_unnamed_addr {
; BE-LABEL: test_floorf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpim f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_floorf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpim f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_floorf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpim f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call float @llvm.floor.f32(float %f)
  ret float %0
}

declare float @llvm.floor.f32(float)

define dso_local double @test_ceil(double %d) local_unnamed_addr {
; BE-LABEL: test_ceil:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpip f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_ceil:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpip f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_ceil:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpip f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call double @llvm.ceil.f64(double %d)
  ret double %0
}

declare double @llvm.ceil.f64(double)

define dso_local float @test_ceilf(float %f) local_unnamed_addr {
; BE-LABEL: test_ceilf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpip f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_ceilf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpip f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_ceilf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpip f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call float @llvm.ceil.f32(float %f)
  ret float %0
}

declare float @llvm.ceil.f32(float)

define dso_local double @test_rint(double %d) local_unnamed_addr {
; BE-LABEL: test_rint:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpic f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_rint:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpic f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_rint:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpic f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call double @llvm.rint.f64(double %d)
  ret double %0
}

declare double @llvm.rint.f64(double)

define dso_local float @test_rintf(float %f) local_unnamed_addr {
; BE-LABEL: test_rintf:
; BE:       # %bb.0: # %entry
; BE-NEXT:    xsrdpic f1, f1
; BE-NEXT:    blr
;
; CHECK-LABEL: test_rintf:
; CHECK:       # %bb.0: # %entry
; CHECK-NEXT:    xsrdpic f1, f1
; CHECK-NEXT:    blr
;
; FAST-LABEL: test_rintf:
; FAST:       # %bb.0: # %entry
; FAST-NEXT:    xsrdpic f1, f1
; FAST-NEXT:    blr
entry:
  %0 = tail call float @llvm.rint.f32(float %f)
  ret float %0
}

declare float @llvm.rint.f32(float)
