|  | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | 
|  | ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ | 
|  | ; RUN:   < %s -mtriple=powerpc64-unknown-linux -mcpu=pwr8 | FileCheck %s\ | 
|  | ; RUN:   -check-prefix=P8 | 
|  | ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ | 
|  | ; RUN:   < %s -mtriple=powerpc64le-unknown-linux -mcpu=pwr9 | FileCheck %s \ | 
|  | ; RUN:   -check-prefix=P9 | 
|  | ; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \ | 
|  | ; RUN:   < %s -mtriple=powerpc64le-unknown-linux -mcpu=pwr8 -mattr=-vsx \ | 
|  | ; RUN:   | FileCheck %s -check-prefix=NOVSX | 
|  |  | 
|  | declare i1 @llvm.experimental.constrained.fptosi.i1.f128(fp128, metadata) | 
|  | declare i32 @llvm.experimental.constrained.fptosi.i32.f128(fp128, metadata) | 
|  | declare i64 @llvm.experimental.constrained.fptosi.i64.f128(fp128, metadata) | 
|  | declare i64 @llvm.experimental.constrained.fptoui.i64.f128(fp128, metadata) | 
|  | declare i32 @llvm.experimental.constrained.fptoui.i32.f128(fp128, metadata) | 
|  | declare i1 @llvm.experimental.constrained.fptoui.i1.f128(fp128, metadata) | 
|  |  | 
|  | declare i1 @llvm.experimental.constrained.fptosi.i1.ppcf128(ppc_fp128, metadata) | 
|  | declare i32 @llvm.experimental.constrained.fptosi.i32.ppcf128(ppc_fp128, metadata) | 
|  | declare i64 @llvm.experimental.constrained.fptosi.i64.ppcf128(ppc_fp128, metadata) | 
|  | declare i64 @llvm.experimental.constrained.fptoui.i64.ppcf128(ppc_fp128, metadata) | 
|  | declare i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(ppc_fp128, metadata) | 
|  | declare i1 @llvm.experimental.constrained.fptoui.i1.ppcf128(ppc_fp128, metadata) | 
|  |  | 
|  | declare i128 @llvm.experimental.constrained.fptosi.i128.ppcf128(ppc_fp128, metadata) | 
|  | declare i128 @llvm.experimental.constrained.fptoui.i128.ppcf128(ppc_fp128, metadata) | 
|  | declare i128 @llvm.experimental.constrained.fptosi.i128.f128(fp128, metadata) | 
|  | declare i128 @llvm.experimental.constrained.fptoui.i128.f128(fp128, metadata) | 
|  |  | 
|  | declare fp128 @llvm.experimental.constrained.sitofp.f128.i1(i1, metadata, metadata) | 
|  | declare fp128 @llvm.experimental.constrained.sitofp.f128.i32(i32, metadata, metadata) | 
|  | declare fp128 @llvm.experimental.constrained.sitofp.f128.i64(i64, metadata, metadata) | 
|  | declare fp128 @llvm.experimental.constrained.uitofp.f128.i1(i1, metadata, metadata) | 
|  | declare fp128 @llvm.experimental.constrained.uitofp.f128.i32(i32, metadata, metadata) | 
|  | declare fp128 @llvm.experimental.constrained.uitofp.f128.i64(i64, metadata, metadata) | 
|  |  | 
|  | declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i1(i1, metadata, metadata) | 
|  | declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i32(i32, metadata, metadata) | 
|  | declare ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i64(i64, metadata, metadata) | 
|  | declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i1(i1, metadata, metadata) | 
|  | declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i32(i32, metadata, metadata) | 
|  | declare ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i64(i64, metadata, metadata) | 
|  |  | 
|  | define i128 @q_to_i128(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_i128: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixkfti | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_i128: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    stdu r1, -32(r1) | 
|  | ; P9-NEXT:    std r0, 48(r1) | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    bl __fixkfti | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    addi r1, r1, 32 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_i128: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixkfti | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i128 @llvm.experimental.constrained.fptosi.i128.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i128 %conv | 
|  | } | 
|  |  | 
|  | define i128 @q_to_u128(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_u128: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixunskfti | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_u128: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    stdu r1, -32(r1) | 
|  | ; P9-NEXT:    std r0, 48(r1) | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    bl __fixunskfti | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    addi r1, r1, 32 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_u128: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixunskfti | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i128 @llvm.experimental.constrained.fptoui.i128.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i128 %conv | 
|  | } | 
|  |  | 
|  | define i1 @q_to_s1(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_s1: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixkfsi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_s1: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    xscvqpswz v2, v2 | 
|  | ; P9-NEXT:    mfvsrwz r3, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_s1: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixkfsi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i1 @llvm.experimental.constrained.fptosi.i1.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i1 %conv | 
|  | } | 
|  |  | 
|  | define i1 @q_to_u1(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_u1: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixkfsi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_u1: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    xscvqpswz v2, v2 | 
|  | ; P9-NEXT:    mfvsrwz r3, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_u1: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixunskfsi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i1 @llvm.experimental.constrained.fptoui.i1.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i1 %conv | 
|  | } | 
|  |  | 
|  | define i128 @ppcq_to_i128(ppc_fp128 %m) #0 { | 
|  | ; P8-LABEL: ppcq_to_i128: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixtfti | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: ppcq_to_i128: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    stdu r1, -32(r1) | 
|  | ; P9-NEXT:    std r0, 48(r1) | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    bl __fixtfti | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    addi r1, r1, 32 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: ppcq_to_i128: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixtfti | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i128 @llvm.experimental.constrained.fptosi.i128.ppcf128(ppc_fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i128 %conv | 
|  | } | 
|  |  | 
|  | define i128 @ppcq_to_u128(ppc_fp128 %m) #0 { | 
|  | ; P8-LABEL: ppcq_to_u128: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixtfti | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: ppcq_to_u128: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    stdu r1, -32(r1) | 
|  | ; P9-NEXT:    std r0, 48(r1) | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    bl __fixtfti | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    addi r1, r1, 32 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: ppcq_to_u128: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixtfti | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i128 @llvm.experimental.constrained.fptosi.i128.ppcf128(ppc_fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i128 %conv | 
|  | } | 
|  |  | 
|  | define signext i32 @q_to_i32(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_i32: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixkfsi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    extsw r3, r3 | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_i32: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    xscvqpswz v2, v2 | 
|  | ; P9-NEXT:    mfvsrwz r3, v2 | 
|  | ; P9-NEXT:    extsw r3, r3 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_i32: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixkfsi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    extsw r3, r3 | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i32 @llvm.experimental.constrained.fptosi.i32.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i32 %conv | 
|  | } | 
|  |  | 
|  | define i64 @q_to_i64(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_i64: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixkfdi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_i64: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    xscvqpsdz v2, v2 | 
|  | ; P9-NEXT:    mfvsrd r3, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_i64: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixkfdi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i64 @llvm.experimental.constrained.fptosi.i64.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i64 %conv | 
|  | } | 
|  |  | 
|  | define i64 @q_to_u64(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_u64: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixunskfdi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_u64: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    xscvqpudz v2, v2 | 
|  | ; P9-NEXT:    mfvsrd r3, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_u64: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixunskfdi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i64 @llvm.experimental.constrained.fptoui.i64.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i64 %conv | 
|  | } | 
|  |  | 
|  | define zeroext i32 @q_to_u32(fp128 %m) #0 { | 
|  | ; P8-LABEL: q_to_u32: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixunskfsi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: q_to_u32: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    xscvqpuwz v2, v2 | 
|  | ; P9-NEXT:    mfvsrwz r3, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: q_to_u32: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixunskfsi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i32 @llvm.experimental.constrained.fptoui.i32.f128(fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i32 %conv | 
|  | } | 
|  |  | 
|  | define signext i32 @ppcq_to_i32(ppc_fp128 %m) #0 { | 
|  | ; P8-LABEL: ppcq_to_i32: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mffs f0 | 
|  | ; P8-NEXT:    mtfsb1 31 | 
|  | ; P8-NEXT:    mtfsb0 30 | 
|  | ; P8-NEXT:    fadd f1, f2, f1 | 
|  | ; P8-NEXT:    mtfsf 1, f0 | 
|  | ; P8-NEXT:    xscvdpsxws f0, f1 | 
|  | ; P8-NEXT:    mffprwz r3, f0 | 
|  | ; P8-NEXT:    extsw r3, r3 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: ppcq_to_i32: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mffs f0 | 
|  | ; P9-NEXT:    mtfsb1 31 | 
|  | ; P9-NEXT:    mtfsb0 30 | 
|  | ; P9-NEXT:    fadd f1, f2, f1 | 
|  | ; P9-NEXT:    mtfsf 1, f0 | 
|  | ; P9-NEXT:    xscvdpsxws f0, f1 | 
|  | ; P9-NEXT:    mffprwz r3, f0 | 
|  | ; P9-NEXT:    extsw r3, r3 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: ppcq_to_i32: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mffs f0 | 
|  | ; NOVSX-NEXT:    mtfsb1 31 | 
|  | ; NOVSX-NEXT:    mtfsb0 30 | 
|  | ; NOVSX-NEXT:    addi r3, r1, -4 | 
|  | ; NOVSX-NEXT:    fadd f1, f2, f1 | 
|  | ; NOVSX-NEXT:    mtfsf 1, f0 | 
|  | ; NOVSX-NEXT:    fctiwz f0, f1 | 
|  | ; NOVSX-NEXT:    stfiwx f0, 0, r3 | 
|  | ; NOVSX-NEXT:    lwa r3, -4(r1) | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i32 @llvm.experimental.constrained.fptosi.i32.ppcf128(ppc_fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i32 %conv | 
|  | } | 
|  |  | 
|  | define i64 @ppcq_to_i64(ppc_fp128 %m) #0 { | 
|  | ; P8-LABEL: ppcq_to_i64: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixtfdi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: ppcq_to_i64: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    stdu r1, -32(r1) | 
|  | ; P9-NEXT:    std r0, 48(r1) | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    bl __fixtfdi | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    addi r1, r1, 32 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: ppcq_to_i64: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixtfdi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i64 @llvm.experimental.constrained.fptosi.i64.ppcf128(ppc_fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i64 %conv | 
|  | } | 
|  |  | 
|  | define i64 @ppcq_to_u64(ppc_fp128 %m) #0 { | 
|  | ; P8-LABEL: ppcq_to_u64: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __fixunstfdi | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: ppcq_to_u64: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    stdu r1, -32(r1) | 
|  | ; P9-NEXT:    std r0, 48(r1) | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    bl __fixunstfdi | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    addi r1, r1, 32 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: ppcq_to_u64: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __fixunstfdi | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i64 @llvm.experimental.constrained.fptoui.i64.ppcf128(ppc_fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i64 %conv | 
|  | } | 
|  |  | 
|  | define zeroext i32 @ppcq_to_u32(ppc_fp128 %m) #0 { | 
|  | ; P8-LABEL: ppcq_to_u32: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -128(r1) | 
|  | ; P8-NEXT:    std r0, 144(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 128 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    .cfi_offset r30, -16 | 
|  | ; P8-NEXT:    addis r3, r2, .LCPI13_0@toc@ha | 
|  | ; P8-NEXT:    xxlxor f3, f3, f3 | 
|  | ; P8-NEXT:    std r30, 112(r1) # 8-byte Folded Spill | 
|  | ; P8-NEXT:    lfs f0, .LCPI13_0@toc@l(r3) | 
|  | ; P8-NEXT:    fcmpo cr1, f2, f3 | 
|  | ; P8-NEXT:    lis r3, -32768 | 
|  | ; P8-NEXT:    fcmpo cr0, f1, f0 | 
|  | ; P8-NEXT:    crand 4*cr5+lt, eq, 4*cr1+lt | 
|  | ; P8-NEXT:    crandc 4*cr5+gt, lt, eq | 
|  | ; P8-NEXT:    cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt | 
|  | ; P8-NEXT:    isel r30, 0, r3, 4*cr5+lt | 
|  | ; P8-NEXT:    bc 12, 4*cr5+lt, .LBB13_2 | 
|  | ; P8-NEXT:  # %bb.1: # %entry | 
|  | ; P8-NEXT:    fmr f3, f0 | 
|  | ; P8-NEXT:  .LBB13_2: # %entry | 
|  | ; P8-NEXT:    xxlxor f4, f4, f4 | 
|  | ; P8-NEXT:    bl __gcc_qsub | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    mffs f0 | 
|  | ; P8-NEXT:    mtfsb1 31 | 
|  | ; P8-NEXT:    mtfsb0 30 | 
|  | ; P8-NEXT:    fadd f1, f2, f1 | 
|  | ; P8-NEXT:    mtfsf 1, f0 | 
|  | ; P8-NEXT:    xscvdpsxws f0, f1 | 
|  | ; P8-NEXT:    mffprwz r3, f0 | 
|  | ; P8-NEXT:    xor r3, r3, r30 | 
|  | ; P8-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload | 
|  | ; P8-NEXT:    clrldi r3, r3, 32 | 
|  | ; P8-NEXT:    addi r1, r1, 128 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: ppcq_to_u32: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mflr r0 | 
|  | ; P9-NEXT:    .cfi_def_cfa_offset 48 | 
|  | ; P9-NEXT:    .cfi_offset lr, 16 | 
|  | ; P9-NEXT:    .cfi_offset r30, -16 | 
|  | ; P9-NEXT:    std r30, -16(r1) # 8-byte Folded Spill | 
|  | ; P9-NEXT:    stdu r1, -48(r1) | 
|  | ; P9-NEXT:    addis r3, r2, .LCPI13_0@toc@ha | 
|  | ; P9-NEXT:    xxlxor f3, f3, f3 | 
|  | ; P9-NEXT:    std r0, 64(r1) | 
|  | ; P9-NEXT:    lfs f0, .LCPI13_0@toc@l(r3) | 
|  | ; P9-NEXT:    fcmpo cr1, f2, f3 | 
|  | ; P9-NEXT:    lis r3, -32768 | 
|  | ; P9-NEXT:    fcmpo cr0, f1, f0 | 
|  | ; P9-NEXT:    crand 4*cr5+lt, eq, 4*cr1+lt | 
|  | ; P9-NEXT:    crandc 4*cr5+gt, lt, eq | 
|  | ; P9-NEXT:    cror 4*cr5+lt, 4*cr5+gt, 4*cr5+lt | 
|  | ; P9-NEXT:    isel r30, 0, r3, 4*cr5+lt | 
|  | ; P9-NEXT:    bc 12, 4*cr5+lt, .LBB13_2 | 
|  | ; P9-NEXT:  # %bb.1: # %entry | 
|  | ; P9-NEXT:    fmr f3, f0 | 
|  | ; P9-NEXT:  .LBB13_2: # %entry | 
|  | ; P9-NEXT:    xxlxor f4, f4, f4 | 
|  | ; P9-NEXT:    bl __gcc_qsub | 
|  | ; P9-NEXT:    nop | 
|  | ; P9-NEXT:    mffs f0 | 
|  | ; P9-NEXT:    mtfsb1 31 | 
|  | ; P9-NEXT:    mtfsb0 30 | 
|  | ; P9-NEXT:    fadd f1, f2, f1 | 
|  | ; P9-NEXT:    mtfsf 1, f0 | 
|  | ; P9-NEXT:    xscvdpsxws f0, f1 | 
|  | ; P9-NEXT:    mffprwz r3, f0 | 
|  | ; P9-NEXT:    xor r3, r3, r30 | 
|  | ; P9-NEXT:    clrldi r3, r3, 32 | 
|  | ; P9-NEXT:    addi r1, r1, 48 | 
|  | ; P9-NEXT:    ld r0, 16(r1) | 
|  | ; P9-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload | 
|  | ; P9-NEXT:    mtlr r0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: ppcq_to_u32: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mfocrf r12, 32 | 
|  | ; NOVSX-NEXT:    stw r12, 8(r1) | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -48(r1) | 
|  | ; NOVSX-NEXT:    std r0, 64(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 48 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    .cfi_offset cr2, 8 | 
|  | ; NOVSX-NEXT:    addis r3, r2, .LCPI13_0@toc@ha | 
|  | ; NOVSX-NEXT:    lfs f0, .LCPI13_0@toc@l(r3) | 
|  | ; NOVSX-NEXT:    addis r3, r2, .LCPI13_1@toc@ha | 
|  | ; NOVSX-NEXT:    lfs f4, .LCPI13_1@toc@l(r3) | 
|  | ; NOVSX-NEXT:    fcmpo cr0, f1, f0 | 
|  | ; NOVSX-NEXT:    fcmpo cr1, f2, f4 | 
|  | ; NOVSX-NEXT:    fmr f3, f4 | 
|  | ; NOVSX-NEXT:    crandc 4*cr5+gt, lt, eq | 
|  | ; NOVSX-NEXT:    crand 4*cr5+lt, eq, 4*cr1+lt | 
|  | ; NOVSX-NEXT:    cror 4*cr2+lt, 4*cr5+gt, 4*cr5+lt | 
|  | ; NOVSX-NEXT:    bc 12, 4*cr2+lt, .LBB13_2 | 
|  | ; NOVSX-NEXT:  # %bb.1: # %entry | 
|  | ; NOVSX-NEXT:    fmr f3, f0 | 
|  | ; NOVSX-NEXT:  .LBB13_2: # %entry | 
|  | ; NOVSX-NEXT:    bl __gcc_qsub | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    mffs f0 | 
|  | ; NOVSX-NEXT:    mtfsb1 31 | 
|  | ; NOVSX-NEXT:    mtfsb0 30 | 
|  | ; NOVSX-NEXT:    addi r3, r1, 44 | 
|  | ; NOVSX-NEXT:    fadd f1, f2, f1 | 
|  | ; NOVSX-NEXT:    mtfsf 1, f0 | 
|  | ; NOVSX-NEXT:    fctiwz f0, f1 | 
|  | ; NOVSX-NEXT:    stfiwx f0, 0, r3 | 
|  | ; NOVSX-NEXT:    lis r3, -32768 | 
|  | ; NOVSX-NEXT:    lwz r4, 44(r1) | 
|  | ; NOVSX-NEXT:    isel r3, 0, r3, 4*cr2+lt | 
|  | ; NOVSX-NEXT:    xor r3, r4, r3 | 
|  | ; NOVSX-NEXT:    clrldi r3, r3, 32 | 
|  | ; NOVSX-NEXT:    addi r1, r1, 48 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    lwz r12, 8(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    mtocrf 32, r12 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call i32 @llvm.experimental.constrained.fptoui.i32.ppcf128(ppc_fp128 %m, metadata !"fpexcept.strict") #0 | 
|  | ret i32 %conv | 
|  | } | 
|  |  | 
|  | define fp128 @i1_to_q(i1 signext %m) #0 { | 
|  | ; P8-LABEL: i1_to_q: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __floatsikf | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: i1_to_q: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtvsrwa v2, r3 | 
|  | ; P9-NEXT:    xscvsdqp v2, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: i1_to_q: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __floatsikf | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call fp128 @llvm.experimental.constrained.sitofp.f128.i1(i1 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret fp128 %conv | 
|  | } | 
|  |  | 
|  | define fp128 @u1_to_q(i1 zeroext %m) #0 { | 
|  | ; P8-LABEL: u1_to_q: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __floatsikf | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: u1_to_q: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtvsrwa v2, r3 | 
|  | ; P9-NEXT:    xscvsdqp v2, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: u1_to_q: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __floatunsikf | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call fp128 @llvm.experimental.constrained.uitofp.f128.i1(i1 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret fp128 %conv | 
|  | } | 
|  |  | 
|  | define ppc_fp128 @i1_to_ppcq(i1 signext %m) #0 { | 
|  | ; P8-LABEL: i1_to_ppcq: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mtfprwa f0, r3 | 
|  | ; P8-NEXT:    xxlxor f2, f2, f2 | 
|  | ; P8-NEXT:    xscvsxddp f1, f0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: i1_to_ppcq: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtfprwa f0, r3 | 
|  | ; P9-NEXT:    xxlxor f2, f2, f2 | 
|  | ; P9-NEXT:    xscvsxddp f1, f0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: i1_to_ppcq: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    stw r3, -4(r1) | 
|  | ; NOVSX-NEXT:    addi r3, r1, -4 | 
|  | ; NOVSX-NEXT:    lfiwax f0, 0, r3 | 
|  | ; NOVSX-NEXT:    addis r3, r2, .LCPI16_0@toc@ha | 
|  | ; NOVSX-NEXT:    lfs f2, .LCPI16_0@toc@l(r3) | 
|  | ; NOVSX-NEXT:    fcfid f1, f0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call ppc_fp128 @llvm.experimental.constrained.sitofp.ppcf128.i1(i1 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret ppc_fp128 %conv | 
|  | } | 
|  |  | 
|  | define ppc_fp128 @u1_to_ppcq(i1 zeroext %m) #0 { | 
|  | ; P8-LABEL: u1_to_ppcq: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mtfprwa f0, r3 | 
|  | ; P8-NEXT:    xxlxor f2, f2, f2 | 
|  | ; P8-NEXT:    xscvsxddp f1, f0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: u1_to_ppcq: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtfprwa f0, r3 | 
|  | ; P9-NEXT:    xxlxor f2, f2, f2 | 
|  | ; P9-NEXT:    xscvsxddp f1, f0 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: u1_to_ppcq: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    stw r3, -4(r1) | 
|  | ; NOVSX-NEXT:    addi r3, r1, -4 | 
|  | ; NOVSX-NEXT:    lfiwax f0, 0, r3 | 
|  | ; NOVSX-NEXT:    addis r3, r2, .LCPI17_0@toc@ha | 
|  | ; NOVSX-NEXT:    lfs f2, .LCPI17_0@toc@l(r3) | 
|  | ; NOVSX-NEXT:    fcfid f1, f0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call ppc_fp128 @llvm.experimental.constrained.uitofp.ppcf128.i1(i1 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret ppc_fp128 %conv | 
|  | } | 
|  |  | 
|  | define fp128 @i32_to_q(i32 signext %m) #0 { | 
|  | ; P8-LABEL: i32_to_q: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __floatsikf | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: i32_to_q: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtvsrwa v2, r3 | 
|  | ; P9-NEXT:    xscvsdqp v2, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: i32_to_q: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __floatsikf | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call fp128 @llvm.experimental.constrained.sitofp.f128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret fp128 %conv | 
|  | } | 
|  |  | 
|  | define fp128 @i64_to_q(i64 %m) #0 { | 
|  | ; P8-LABEL: i64_to_q: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __floatdikf | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: i64_to_q: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtvsrd v2, r3 | 
|  | ; P9-NEXT:    xscvsdqp v2, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: i64_to_q: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __floatdikf | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call fp128 @llvm.experimental.constrained.sitofp.f128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret fp128 %conv | 
|  | } | 
|  |  | 
|  | define fp128 @u32_to_q(i32 zeroext %m) #0 { | 
|  | ; P8-LABEL: u32_to_q: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __floatunsikf | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: u32_to_q: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtvsrwz v2, r3 | 
|  | ; P9-NEXT:    xscvudqp v2, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: u32_to_q: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __floatunsikf | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call fp128 @llvm.experimental.constrained.uitofp.f128.i32(i32 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret fp128 %conv | 
|  | } | 
|  |  | 
|  | define fp128 @u64_to_q(i64 %m) #0 { | 
|  | ; P8-LABEL: u64_to_q: | 
|  | ; P8:       # %bb.0: # %entry | 
|  | ; P8-NEXT:    mflr r0 | 
|  | ; P8-NEXT:    stdu r1, -112(r1) | 
|  | ; P8-NEXT:    std r0, 128(r1) | 
|  | ; P8-NEXT:    .cfi_def_cfa_offset 112 | 
|  | ; P8-NEXT:    .cfi_offset lr, 16 | 
|  | ; P8-NEXT:    bl __floatundikf | 
|  | ; P8-NEXT:    nop | 
|  | ; P8-NEXT:    addi r1, r1, 112 | 
|  | ; P8-NEXT:    ld r0, 16(r1) | 
|  | ; P8-NEXT:    mtlr r0 | 
|  | ; P8-NEXT:    blr | 
|  | ; | 
|  | ; P9-LABEL: u64_to_q: | 
|  | ; P9:       # %bb.0: # %entry | 
|  | ; P9-NEXT:    mtvsrd v2, r3 | 
|  | ; P9-NEXT:    xscvudqp v2, v2 | 
|  | ; P9-NEXT:    blr | 
|  | ; | 
|  | ; NOVSX-LABEL: u64_to_q: | 
|  | ; NOVSX:       # %bb.0: # %entry | 
|  | ; NOVSX-NEXT:    mflr r0 | 
|  | ; NOVSX-NEXT:    stdu r1, -32(r1) | 
|  | ; NOVSX-NEXT:    std r0, 48(r1) | 
|  | ; NOVSX-NEXT:    .cfi_def_cfa_offset 32 | 
|  | ; NOVSX-NEXT:    .cfi_offset lr, 16 | 
|  | ; NOVSX-NEXT:    bl __floatundikf | 
|  | ; NOVSX-NEXT:    nop | 
|  | ; NOVSX-NEXT:    addi r1, r1, 32 | 
|  | ; NOVSX-NEXT:    ld r0, 16(r1) | 
|  | ; NOVSX-NEXT:    mtlr r0 | 
|  | ; NOVSX-NEXT:    blr | 
|  | entry: | 
|  | %conv = tail call fp128 @llvm.experimental.constrained.uitofp.f128.i64(i64 %m, metadata !"round.dynamic", metadata !"fpexcept.strict") #0 | 
|  | ret fp128 %conv | 
|  | } | 
|  |  | 
|  | attributes #0 = { strictfp } |