brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.4 KiB · af48bf2 Raw
913 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr7 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \3; RUN:   -mtriple=powerpc64-unknown-unknown -verify-machineinstrs < %s | \4; RUN:   FileCheck %s --check-prefix=BE5; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr \6; RUN:   -mtriple=powerpc64le-unknown-unknown -verify-machineinstrs < %s | \7; RUN:   FileCheck %s8define dso_local i64 @test_lrint(double %d) local_unnamed_addr {9; BE-LABEL: test_lrint:10; BE:       # %bb.0: # %entry11; BE-NEXT:    mflr r012; BE-NEXT:    stdu r1, -112(r1)13; BE-NEXT:    std r0, 128(r1)14; BE-NEXT:    .cfi_def_cfa_offset 11215; BE-NEXT:    .cfi_offset lr, 1616; BE-NEXT:    bl lrint17; BE-NEXT:    nop18; BE-NEXT:    addi r1, r1, 11219; BE-NEXT:    ld r0, 16(r1)20; BE-NEXT:    mtlr r021; BE-NEXT:    blr22;23; CHECK-LABEL: test_lrint:24; CHECK:       # %bb.0: # %entry25; CHECK-NEXT:    mflr r026; CHECK-NEXT:    stdu r1, -32(r1)27; CHECK-NEXT:    std r0, 48(r1)28; CHECK-NEXT:    .cfi_def_cfa_offset 3229; CHECK-NEXT:    .cfi_offset lr, 1630; CHECK-NEXT:    bl lrint31; CHECK-NEXT:    nop32; CHECK-NEXT:    addi r1, r1, 3233; CHECK-NEXT:    ld r0, 16(r1)34; CHECK-NEXT:    mtlr r035; CHECK-NEXT:    blr36entry:37  %0 = tail call i64 @llvm.lrint.i64.f64(double %d)38  ret i64 %039}40 41define dso_local i64 @test_constrained_lrint(double %d) local_unnamed_addr {42; BE-LABEL: test_constrained_lrint:43; BE:       # %bb.0: # %entry44; BE-NEXT:    mflr r045; BE-NEXT:    stdu r1, -112(r1)46; BE-NEXT:    std r0, 128(r1)47; BE-NEXT:    .cfi_def_cfa_offset 11248; BE-NEXT:    .cfi_offset lr, 1649; BE-NEXT:    bl lrint50; BE-NEXT:    nop51; BE-NEXT:    addi r1, r1, 11252; BE-NEXT:    ld r0, 16(r1)53; BE-NEXT:    mtlr r054; BE-NEXT:    blr55;56; CHECK-LABEL: test_constrained_lrint:57; CHECK:       # %bb.0: # %entry58; CHECK-NEXT:    fctid f0, f159; CHECK-NEXT:    mffprd r3, f060; CHECK-NEXT:    blr61entry:62  %0 = tail call i64 @llvm.experimental.constrained.lrint(double %d, metadata !"round.dynamic", metadata !"fpexcept.ignore")63  ret i64 %064}65 66declare i64 @llvm.lrint.i64.f64(double)67 68define dso_local i64 @test_lrintf(float %f) local_unnamed_addr {69; BE-LABEL: test_lrintf:70; BE:       # %bb.0: # %entry71; BE-NEXT:    mflr r072; BE-NEXT:    stdu r1, -112(r1)73; BE-NEXT:    std r0, 128(r1)74; BE-NEXT:    .cfi_def_cfa_offset 11275; BE-NEXT:    .cfi_offset lr, 1676; BE-NEXT:    bl lrintf77; BE-NEXT:    nop78; BE-NEXT:    addi r1, r1, 11279; BE-NEXT:    ld r0, 16(r1)80; BE-NEXT:    mtlr r081; BE-NEXT:    blr82;83; CHECK-LABEL: test_lrintf:84; CHECK:       # %bb.0: # %entry85; CHECK-NEXT:    mflr r086; CHECK-NEXT:    stdu r1, -32(r1)87; CHECK-NEXT:    std r0, 48(r1)88; CHECK-NEXT:    .cfi_def_cfa_offset 3289; CHECK-NEXT:    .cfi_offset lr, 1690; CHECK-NEXT:    bl lrintf91; CHECK-NEXT:    nop92; CHECK-NEXT:    addi r1, r1, 3293; CHECK-NEXT:    ld r0, 16(r1)94; CHECK-NEXT:    mtlr r095; CHECK-NEXT:    blr96entry:97  %0 = tail call i64 @llvm.lrint.i64.f32(float %f)98  ret i64 %099}100 101define dso_local i64 @test_constrained_lrintf(float %f) local_unnamed_addr {102; BE-LABEL: test_constrained_lrintf:103; BE:       # %bb.0: # %entry104; BE-NEXT:    mflr r0105; BE-NEXT:    stdu r1, -112(r1)106; BE-NEXT:    std r0, 128(r1)107; BE-NEXT:    .cfi_def_cfa_offset 112108; BE-NEXT:    .cfi_offset lr, 16109; BE-NEXT:    bl lrintf110; BE-NEXT:    nop111; BE-NEXT:    addi r1, r1, 112112; BE-NEXT:    ld r0, 16(r1)113; BE-NEXT:    mtlr r0114; BE-NEXT:    blr115;116; CHECK-LABEL: test_constrained_lrintf:117; CHECK:       # %bb.0: # %entry118; CHECK-NEXT:    fctid f0, f1119; CHECK-NEXT:    mffprd r3, f0120; CHECK-NEXT:    blr121entry:122  %0 = tail call i64 @llvm.experimental.constrained.lrint(float %f, metadata !"round.dynamic", metadata !"fpexcept.ignore")123  ret i64 %0124}125 126declare i64 @llvm.lrint.i64.f32(float)127 128define dso_local i64 @test_llrint(double %d) local_unnamed_addr {129; BE-LABEL: test_llrint:130; BE:       # %bb.0: # %entry131; BE-NEXT:    mflr r0132; BE-NEXT:    stdu r1, -112(r1)133; BE-NEXT:    std r0, 128(r1)134; BE-NEXT:    .cfi_def_cfa_offset 112135; BE-NEXT:    .cfi_offset lr, 16136; BE-NEXT:    bl llrint137; BE-NEXT:    nop138; BE-NEXT:    addi r1, r1, 112139; BE-NEXT:    ld r0, 16(r1)140; BE-NEXT:    mtlr r0141; BE-NEXT:    blr142;143; CHECK-LABEL: test_llrint:144; CHECK:       # %bb.0: # %entry145; CHECK-NEXT:    mflr r0146; CHECK-NEXT:    stdu r1, -32(r1)147; CHECK-NEXT:    std r0, 48(r1)148; CHECK-NEXT:    .cfi_def_cfa_offset 32149; CHECK-NEXT:    .cfi_offset lr, 16150; CHECK-NEXT:    bl llrint151; CHECK-NEXT:    nop152; CHECK-NEXT:    addi r1, r1, 32153; CHECK-NEXT:    ld r0, 16(r1)154; CHECK-NEXT:    mtlr r0155; CHECK-NEXT:    blr156entry:157  %0 = tail call i64 @llvm.llrint.i64.f64(double %d)158  ret i64 %0159}160 161define dso_local i64 @test_constrained_llrint(double %d) local_unnamed_addr {162; BE-LABEL: test_constrained_llrint:163; BE:       # %bb.0: # %entry164; BE-NEXT:    mflr r0165; BE-NEXT:    stdu r1, -112(r1)166; BE-NEXT:    std r0, 128(r1)167; BE-NEXT:    .cfi_def_cfa_offset 112168; BE-NEXT:    .cfi_offset lr, 16169; BE-NEXT:    bl llrint170; BE-NEXT:    nop171; BE-NEXT:    addi r1, r1, 112172; BE-NEXT:    ld r0, 16(r1)173; BE-NEXT:    mtlr r0174; BE-NEXT:    blr175;176; CHECK-LABEL: test_constrained_llrint:177; CHECK:       # %bb.0: # %entry178; CHECK-NEXT:    fctid f0, f1179; CHECK-NEXT:    mffprd r3, f0180; CHECK-NEXT:    blr181entry:182  %0 = tail call i64 @llvm.experimental.constrained.llrint(double %d, metadata !"round.dynamic", metadata !"fpexcept.ignore")183  ret i64 %0184}185 186declare i64 @llvm.llrint.i64.f64(double)187 188define dso_local i64 @test_llrintf(float %f) local_unnamed_addr {189; BE-LABEL: test_llrintf:190; BE:       # %bb.0: # %entry191; BE-NEXT:    mflr r0192; BE-NEXT:    stdu r1, -112(r1)193; BE-NEXT:    std r0, 128(r1)194; BE-NEXT:    .cfi_def_cfa_offset 112195; BE-NEXT:    .cfi_offset lr, 16196; BE-NEXT:    bl llrintf197; BE-NEXT:    nop198; BE-NEXT:    addi r1, r1, 112199; BE-NEXT:    ld r0, 16(r1)200; BE-NEXT:    mtlr r0201; BE-NEXT:    blr202;203; CHECK-LABEL: test_llrintf:204; CHECK:       # %bb.0: # %entry205; CHECK-NEXT:    mflr r0206; CHECK-NEXT:    stdu r1, -32(r1)207; CHECK-NEXT:    std r0, 48(r1)208; CHECK-NEXT:    .cfi_def_cfa_offset 32209; CHECK-NEXT:    .cfi_offset lr, 16210; CHECK-NEXT:    bl llrintf211; CHECK-NEXT:    nop212; CHECK-NEXT:    addi r1, r1, 32213; CHECK-NEXT:    ld r0, 16(r1)214; CHECK-NEXT:    mtlr r0215; CHECK-NEXT:    blr216entry:217  %0 = tail call i64 @llvm.llrint.i64.f32(float %f)218  ret i64 %0219}220 221define dso_local i64 @test_constrained_llrintf(float %f) local_unnamed_addr {222; BE-LABEL: test_constrained_llrintf:223; BE:       # %bb.0: # %entry224; BE-NEXT:    mflr r0225; BE-NEXT:    stdu r1, -112(r1)226; BE-NEXT:    std r0, 128(r1)227; BE-NEXT:    .cfi_def_cfa_offset 112228; BE-NEXT:    .cfi_offset lr, 16229; BE-NEXT:    bl llrintf230; BE-NEXT:    nop231; BE-NEXT:    addi r1, r1, 112232; BE-NEXT:    ld r0, 16(r1)233; BE-NEXT:    mtlr r0234; BE-NEXT:    blr235;236; CHECK-LABEL: test_constrained_llrintf:237; CHECK:       # %bb.0: # %entry238; CHECK-NEXT:    fctid f0, f1239; CHECK-NEXT:    mffprd r3, f0240; CHECK-NEXT:    blr241entry:242  %0 = tail call i64 @llvm.experimental.constrained.llrint(float %f, metadata !"round.dynamic", metadata !"fpexcept.ignore")243  ret i64 %0244}245 246declare i64 @llvm.llrint.i64.f32(float)247 248define dso_local i64 @test_lround(double %d) local_unnamed_addr {249; BE-LABEL: test_lround:250; BE:       # %bb.0: # %entry251; BE-NEXT:    mflr r0252; BE-NEXT:    stdu r1, -112(r1)253; BE-NEXT:    std r0, 128(r1)254; BE-NEXT:    .cfi_def_cfa_offset 112255; BE-NEXT:    .cfi_offset lr, 16256; BE-NEXT:    bl lround257; BE-NEXT:    nop258; BE-NEXT:    addi r1, r1, 112259; BE-NEXT:    ld r0, 16(r1)260; BE-NEXT:    mtlr r0261; BE-NEXT:    blr262;263; CHECK-LABEL: test_lround:264; CHECK:       # %bb.0: # %entry265; CHECK-NEXT:    mflr r0266; CHECK-NEXT:    stdu r1, -32(r1)267; CHECK-NEXT:    std r0, 48(r1)268; CHECK-NEXT:    .cfi_def_cfa_offset 32269; CHECK-NEXT:    .cfi_offset lr, 16270; CHECK-NEXT:    bl lround271; CHECK-NEXT:    nop272; CHECK-NEXT:    addi r1, r1, 32273; CHECK-NEXT:    ld r0, 16(r1)274; CHECK-NEXT:    mtlr r0275; CHECK-NEXT:    blr276entry:277  %0 = tail call i64 @llvm.lround.i64.f64(double %d)278  ret i64 %0279}280 281define dso_local i64 @test_constrained_lround(double %d) local_unnamed_addr {282; BE-LABEL: test_constrained_lround:283; BE:       # %bb.0: # %entry284; BE-NEXT:    mflr r0285; BE-NEXT:    stdu r1, -112(r1)286; BE-NEXT:    std r0, 128(r1)287; BE-NEXT:    .cfi_def_cfa_offset 112288; BE-NEXT:    .cfi_offset lr, 16289; BE-NEXT:    bl lround290; BE-NEXT:    nop291; BE-NEXT:    addi r1, r1, 112292; BE-NEXT:    ld r0, 16(r1)293; BE-NEXT:    mtlr r0294; BE-NEXT:    blr295;296; CHECK-LABEL: test_constrained_lround:297; CHECK:       # %bb.0: # %entry298; CHECK-NEXT:    xsrdpi f0, f1299; CHECK-NEXT:    fctid f0, f0300; CHECK-NEXT:    mffprd r3, f0301; CHECK-NEXT:    blr302entry:303  %0 = tail call i64 @llvm.experimental.constrained.lround(double %d, metadata !"fpexcept.ignore")304  ret i64 %0305}306 307declare i64 @llvm.lround.i64.f64(double)308 309define dso_local i32 @test_lroundi32f64(double %d) local_unnamed_addr {310; BE-LABEL: test_lroundi32f64:311; BE:       # %bb.0: # %entry312; BE-NEXT:    mflr r0313; BE-NEXT:    stdu r1, -112(r1)314; BE-NEXT:    std r0, 128(r1)315; BE-NEXT:    .cfi_def_cfa_offset 112316; BE-NEXT:    .cfi_offset lr, 16317; BE-NEXT:    bl lround318; BE-NEXT:    nop319; BE-NEXT:    addi r1, r1, 112320; BE-NEXT:    ld r0, 16(r1)321; BE-NEXT:    mtlr r0322; BE-NEXT:    blr323;324; CHECK-LABEL: test_lroundi32f64:325; CHECK:       # %bb.0: # %entry326; CHECK-NEXT:    mflr r0327; CHECK-NEXT:    stdu r1, -32(r1)328; CHECK-NEXT:    std r0, 48(r1)329; CHECK-NEXT:    .cfi_def_cfa_offset 32330; CHECK-NEXT:    .cfi_offset lr, 16331; CHECK-NEXT:    bl lround332; CHECK-NEXT:    nop333; CHECK-NEXT:    addi r1, r1, 32334; CHECK-NEXT:    ld r0, 16(r1)335; CHECK-NEXT:    mtlr r0336; CHECK-NEXT:    blr337entry:338  %0 = tail call i32 @llvm.lround.i32.f64(double %d)339  ret i32 %0340}341 342define dso_local i32 @test_constrained_lroundi32f64(double %d) local_unnamed_addr {343; BE-LABEL: test_constrained_lroundi32f64:344; BE:       # %bb.0: # %entry345; BE-NEXT:    mflr r0346; BE-NEXT:    stdu r1, -112(r1)347; BE-NEXT:    std r0, 128(r1)348; BE-NEXT:    .cfi_def_cfa_offset 112349; BE-NEXT:    .cfi_offset lr, 16350; BE-NEXT:    bl lround351; BE-NEXT:    nop352; BE-NEXT:    addi r1, r1, 112353; BE-NEXT:    ld r0, 16(r1)354; BE-NEXT:    mtlr r0355; BE-NEXT:    blr356;357; CHECK-LABEL: test_constrained_lroundi32f64:358; CHECK:       # %bb.0: # %entry359; CHECK-NEXT:    xsrdpi f0, f1360; CHECK-NEXT:    fctiw f0, f0361; CHECK-NEXT:    mffprwz r3, f0362; CHECK-NEXT:    blr363entry:364  %0 = tail call i32 @llvm.experimental.constrained.lround(double %d, metadata !"fpexcept.ignore")365  ret i32 %0366}367 368declare i32 @llvm.lround.i32.f64(double)369 370define dso_local i64 @test_lroundf(float %f) local_unnamed_addr {371; BE-LABEL: test_lroundf:372; BE:       # %bb.0: # %entry373; BE-NEXT:    mflr r0374; BE-NEXT:    stdu r1, -112(r1)375; BE-NEXT:    std r0, 128(r1)376; BE-NEXT:    .cfi_def_cfa_offset 112377; BE-NEXT:    .cfi_offset lr, 16378; BE-NEXT:    bl lroundf379; BE-NEXT:    nop380; BE-NEXT:    addi r1, r1, 112381; BE-NEXT:    ld r0, 16(r1)382; BE-NEXT:    mtlr r0383; BE-NEXT:    blr384;385; CHECK-LABEL: test_lroundf:386; CHECK:       # %bb.0: # %entry387; CHECK-NEXT:    mflr r0388; CHECK-NEXT:    stdu r1, -32(r1)389; CHECK-NEXT:    std r0, 48(r1)390; CHECK-NEXT:    .cfi_def_cfa_offset 32391; CHECK-NEXT:    .cfi_offset lr, 16392; CHECK-NEXT:    bl lroundf393; CHECK-NEXT:    nop394; CHECK-NEXT:    addi r1, r1, 32395; CHECK-NEXT:    ld r0, 16(r1)396; CHECK-NEXT:    mtlr r0397; CHECK-NEXT:    blr398entry:399  %0 = tail call i64 @llvm.lround.i64.f32(float %f)400  ret i64 %0401}402 403define dso_local i64 @test_constrained_lroundf(float %f) local_unnamed_addr {404; BE-LABEL: test_constrained_lroundf:405; BE:       # %bb.0: # %entry406; BE-NEXT:    mflr r0407; BE-NEXT:    stdu r1, -112(r1)408; BE-NEXT:    std r0, 128(r1)409; BE-NEXT:    .cfi_def_cfa_offset 112410; BE-NEXT:    .cfi_offset lr, 16411; BE-NEXT:    bl lroundf412; BE-NEXT:    nop413; BE-NEXT:    addi r1, r1, 112414; BE-NEXT:    ld r0, 16(r1)415; BE-NEXT:    mtlr r0416; BE-NEXT:    blr417;418; CHECK-LABEL: test_constrained_lroundf:419; CHECK:       # %bb.0: # %entry420; CHECK-NEXT:    xsrdpi f0, f1421; CHECK-NEXT:    fctid f0, f0422; CHECK-NEXT:    mffprd r3, f0423; CHECK-NEXT:    blr424entry:425  %0 = tail call i64 @llvm.experimental.constrained.lround(float %f, metadata !"fpexcept.ignore")426  ret i64 %0427}428 429declare i64 @llvm.lround.i64.f32(float)430 431define dso_local i32 @test_lroundi32f32(float %d) local_unnamed_addr {432; BE-LABEL: test_lroundi32f32:433; BE:       # %bb.0: # %entry434; BE-NEXT:    mflr r0435; BE-NEXT:    stdu r1, -112(r1)436; BE-NEXT:    std r0, 128(r1)437; BE-NEXT:    .cfi_def_cfa_offset 112438; BE-NEXT:    .cfi_offset lr, 16439; BE-NEXT:    bl lroundf440; BE-NEXT:    nop441; BE-NEXT:    addi r1, r1, 112442; BE-NEXT:    ld r0, 16(r1)443; BE-NEXT:    mtlr r0444; BE-NEXT:    blr445;446; CHECK-LABEL: test_lroundi32f32:447; CHECK:       # %bb.0: # %entry448; CHECK-NEXT:    mflr r0449; CHECK-NEXT:    stdu r1, -32(r1)450; CHECK-NEXT:    std r0, 48(r1)451; CHECK-NEXT:    .cfi_def_cfa_offset 32452; CHECK-NEXT:    .cfi_offset lr, 16453; CHECK-NEXT:    bl lroundf454; CHECK-NEXT:    nop455; CHECK-NEXT:    addi r1, r1, 32456; CHECK-NEXT:    ld r0, 16(r1)457; CHECK-NEXT:    mtlr r0458; CHECK-NEXT:    blr459entry:460  %0 = tail call i32 @llvm.lround.i32.f32(float %d)461  ret i32 %0462}463 464define dso_local i32 @test_constrained_lroundi32f32(float %f) local_unnamed_addr {465; BE-LABEL: test_constrained_lroundi32f32:466; BE:       # %bb.0: # %entry467; BE-NEXT:    mflr r0468; BE-NEXT:    stdu r1, -112(r1)469; BE-NEXT:    std r0, 128(r1)470; BE-NEXT:    .cfi_def_cfa_offset 112471; BE-NEXT:    .cfi_offset lr, 16472; BE-NEXT:    bl lroundf473; BE-NEXT:    nop474; BE-NEXT:    addi r1, r1, 112475; BE-NEXT:    ld r0, 16(r1)476; BE-NEXT:    mtlr r0477; BE-NEXT:    blr478;479; CHECK-LABEL: test_constrained_lroundi32f32:480; CHECK:       # %bb.0: # %entry481; CHECK-NEXT:    xsrdpi f0, f1482; CHECK-NEXT:    fctiw f0, f0483; CHECK-NEXT:    mffprwz r3, f0484; CHECK-NEXT:    blr485entry:486  %0 = tail call i32 @llvm.experimental.constrained.lround(float %f, metadata !"fpexcept.ignore")487  ret i32 %0488}489 490declare i32 @llvm.lround.i32.f32(float)491 492define dso_local i64 @test_llround(double %d) local_unnamed_addr {493; BE-LABEL: test_llround:494; BE:       # %bb.0: # %entry495; BE-NEXT:    mflr r0496; BE-NEXT:    stdu r1, -112(r1)497; BE-NEXT:    std r0, 128(r1)498; BE-NEXT:    .cfi_def_cfa_offset 112499; BE-NEXT:    .cfi_offset lr, 16500; BE-NEXT:    bl llround501; BE-NEXT:    nop502; BE-NEXT:    addi r1, r1, 112503; BE-NEXT:    ld r0, 16(r1)504; BE-NEXT:    mtlr r0505; BE-NEXT:    blr506;507; CHECK-LABEL: test_llround:508; CHECK:       # %bb.0: # %entry509; CHECK-NEXT:    mflr r0510; CHECK-NEXT:    stdu r1, -32(r1)511; CHECK-NEXT:    std r0, 48(r1)512; CHECK-NEXT:    .cfi_def_cfa_offset 32513; CHECK-NEXT:    .cfi_offset lr, 16514; CHECK-NEXT:    bl llround515; CHECK-NEXT:    nop516; CHECK-NEXT:    addi r1, r1, 32517; CHECK-NEXT:    ld r0, 16(r1)518; CHECK-NEXT:    mtlr r0519; CHECK-NEXT:    blr520entry:521  %0 = tail call i64 @llvm.llround.i64.f64(double %d)522  ret i64 %0523}524 525define dso_local i64 @test_constrained_llround(double %d) local_unnamed_addr {526; BE-LABEL: test_constrained_llround:527; BE:       # %bb.0: # %entry528; BE-NEXT:    mflr r0529; BE-NEXT:    stdu r1, -112(r1)530; BE-NEXT:    std r0, 128(r1)531; BE-NEXT:    .cfi_def_cfa_offset 112532; BE-NEXT:    .cfi_offset lr, 16533; BE-NEXT:    bl llround534; BE-NEXT:    nop535; BE-NEXT:    addi r1, r1, 112536; BE-NEXT:    ld r0, 16(r1)537; BE-NEXT:    mtlr r0538; BE-NEXT:    blr539;540; CHECK-LABEL: test_constrained_llround:541; CHECK:       # %bb.0: # %entry542; CHECK-NEXT:    xsrdpi f0, f1543; CHECK-NEXT:    fctid f0, f0544; CHECK-NEXT:    mffprd r3, f0545; CHECK-NEXT:    blr546entry:547  %0 = tail call i64 @llvm.experimental.constrained.llround(double %d, metadata !"fpexcept.ignore")548  ret i64 %0549}550 551declare i64 @llvm.llround.i64.f64(double)552 553define dso_local i64 @test_llroundf(float %f) local_unnamed_addr {554; BE-LABEL: test_llroundf:555; BE:       # %bb.0: # %entry556; BE-NEXT:    mflr r0557; BE-NEXT:    stdu r1, -112(r1)558; BE-NEXT:    std r0, 128(r1)559; BE-NEXT:    .cfi_def_cfa_offset 112560; BE-NEXT:    .cfi_offset lr, 16561; BE-NEXT:    bl llroundf562; BE-NEXT:    nop563; BE-NEXT:    addi r1, r1, 112564; BE-NEXT:    ld r0, 16(r1)565; BE-NEXT:    mtlr r0566; BE-NEXT:    blr567;568; CHECK-LABEL: test_llroundf:569; CHECK:       # %bb.0: # %entry570; CHECK-NEXT:    mflr r0571; CHECK-NEXT:    stdu r1, -32(r1)572; CHECK-NEXT:    std r0, 48(r1)573; CHECK-NEXT:    .cfi_def_cfa_offset 32574; CHECK-NEXT:    .cfi_offset lr, 16575; CHECK-NEXT:    bl llroundf576; CHECK-NEXT:    nop577; CHECK-NEXT:    addi r1, r1, 32578; CHECK-NEXT:    ld r0, 16(r1)579; CHECK-NEXT:    mtlr r0580; CHECK-NEXT:    blr581entry:582  %0 = tail call i64 @llvm.llround.i64.f32(float %f)583  ret i64 %0584}585 586define dso_local i64 @test_constrained_llroundf(float %f) local_unnamed_addr {587; BE-LABEL: test_constrained_llroundf:588; BE:       # %bb.0: # %entry589; BE-NEXT:    mflr r0590; BE-NEXT:    stdu r1, -112(r1)591; BE-NEXT:    std r0, 128(r1)592; BE-NEXT:    .cfi_def_cfa_offset 112593; BE-NEXT:    .cfi_offset lr, 16594; BE-NEXT:    bl llroundf595; BE-NEXT:    nop596; BE-NEXT:    addi r1, r1, 112597; BE-NEXT:    ld r0, 16(r1)598; BE-NEXT:    mtlr r0599; BE-NEXT:    blr600;601; CHECK-LABEL: test_constrained_llroundf:602; CHECK:       # %bb.0: # %entry603; CHECK-NEXT:    xsrdpi f0, f1604; CHECK-NEXT:    fctid f0, f0605; CHECK-NEXT:    mffprd r3, f0606; CHECK-NEXT:    blr607entry:608  %0 = tail call i64 @llvm.experimental.constrained.llround(float %f, metadata !"fpexcept.ignore")609  ret i64 %0610}611 612declare i64 @llvm.llround.i64.f32(float)613 614define dso_local double @test_nearbyint(double %d) local_unnamed_addr {615; BE-LABEL: test_nearbyint:616; BE:       # %bb.0: # %entry617; BE-NEXT:    mflr r0618; BE-NEXT:    stdu r1, -112(r1)619; BE-NEXT:    std r0, 128(r1)620; BE-NEXT:    .cfi_def_cfa_offset 112621; BE-NEXT:    .cfi_offset lr, 16622; BE-NEXT:    bl nearbyint623; BE-NEXT:    nop624; BE-NEXT:    addi r1, r1, 112625; BE-NEXT:    ld r0, 16(r1)626; BE-NEXT:    mtlr r0627; BE-NEXT:    blr628;629; CHECK-LABEL: test_nearbyint:630; CHECK:       # %bb.0: # %entry631; CHECK-NEXT:    mflr r0632; CHECK-NEXT:    stdu r1, -32(r1)633; CHECK-NEXT:    std r0, 48(r1)634; CHECK-NEXT:    .cfi_def_cfa_offset 32635; CHECK-NEXT:    .cfi_offset lr, 16636; CHECK-NEXT:    bl nearbyint637; CHECK-NEXT:    nop638; CHECK-NEXT:    addi r1, r1, 32639; CHECK-NEXT:    ld r0, 16(r1)640; CHECK-NEXT:    mtlr r0641; CHECK-NEXT:    blr642entry:643  %0 = tail call double @llvm.nearbyint.f64(double %d)644  ret double %0645}646 647define dso_local double @test_constrained_nearbyint(double %d) local_unnamed_addr {648; BE-LABEL: test_constrained_nearbyint:649; BE:       # %bb.0: # %entry650; BE-NEXT:    xsrdpic f1, f1651; BE-NEXT:    blr652;653; CHECK-LABEL: test_constrained_nearbyint:654; CHECK:       # %bb.0: # %entry655; CHECK-NEXT:    xsrdpic f1, f1656; CHECK-NEXT:    blr657entry:658  %0 = tail call double @llvm.experimental.constrained.nearbyint(double %d, metadata !"round.dynamic", metadata !"fpexcept.ignore")659  ret double %0660}661 662declare double @llvm.nearbyint.f64(double)663 664define dso_local float @test_nearbyintf(float %f) local_unnamed_addr {665; BE-LABEL: test_nearbyintf:666; BE:       # %bb.0: # %entry667; BE-NEXT:    mflr r0668; BE-NEXT:    stdu r1, -112(r1)669; BE-NEXT:    std r0, 128(r1)670; BE-NEXT:    .cfi_def_cfa_offset 112671; BE-NEXT:    .cfi_offset lr, 16672; BE-NEXT:    bl nearbyintf673; BE-NEXT:    nop674; BE-NEXT:    addi r1, r1, 112675; BE-NEXT:    ld r0, 16(r1)676; BE-NEXT:    mtlr r0677; BE-NEXT:    blr678;679; CHECK-LABEL: test_nearbyintf:680; CHECK:       # %bb.0: # %entry681; CHECK-NEXT:    mflr r0682; CHECK-NEXT:    stdu r1, -32(r1)683; CHECK-NEXT:    std r0, 48(r1)684; CHECK-NEXT:    .cfi_def_cfa_offset 32685; CHECK-NEXT:    .cfi_offset lr, 16686; CHECK-NEXT:    bl nearbyintf687; CHECK-NEXT:    nop688; CHECK-NEXT:    addi r1, r1, 32689; CHECK-NEXT:    ld r0, 16(r1)690; CHECK-NEXT:    mtlr r0691; CHECK-NEXT:    blr692entry:693  %0 = tail call float @llvm.nearbyint.f32(float %f)694  ret float %0695}696 697define dso_local float @test_constrained_nearbyintf(float %f) local_unnamed_addr {698; BE-LABEL: test_constrained_nearbyintf:699; BE:       # %bb.0: # %entry700; BE-NEXT:    xsrdpic f1, f1701; BE-NEXT:    blr702;703; CHECK-LABEL: test_constrained_nearbyintf:704; CHECK:       # %bb.0: # %entry705; CHECK-NEXT:    xsrdpic f1, f1706; CHECK-NEXT:    blr707entry:708  %0 = tail call float @llvm.experimental.constrained.nearbyint(float %f, metadata !"round.dynamic", metadata !"fpexcept.ignore")709  ret float %0710}711 712declare float @llvm.nearbyint.f32(float)713 714define dso_local double @test_round(double %d) local_unnamed_addr {715; BE-LABEL: test_round:716; BE:       # %bb.0: # %entry717; BE-NEXT:    xsrdpi f1, f1718; BE-NEXT:    blr719;720; CHECK-LABEL: test_round:721; CHECK:       # %bb.0: # %entry722; CHECK-NEXT:    xsrdpi f1, f1723; CHECK-NEXT:    blr724entry:725  %0 = tail call double @llvm.round.f64(double %d)726  ret double %0727}728 729define dso_local double @test_constrained_round(double %d) local_unnamed_addr {730; BE-LABEL: test_constrained_round:731; BE:       # %bb.0: # %entry732; BE-NEXT:    xsrdpi f1, f1733; BE-NEXT:    blr734;735; CHECK-LABEL: test_constrained_round:736; CHECK:       # %bb.0: # %entry737; CHECK-NEXT:    xsrdpi f1, f1738; CHECK-NEXT:    blr739entry:740  %0 = tail call double @llvm.experimental.constrained.round(double %d, metadata !"fpexcept.ignore")741  ret double %0742}743 744declare double @llvm.round.f64(double)745 746define dso_local float @test_roundf(float %f) local_unnamed_addr {747; BE-LABEL: test_roundf:748; BE:       # %bb.0: # %entry749; BE-NEXT:    xsrdpi f1, f1750; BE-NEXT:    blr751;752; CHECK-LABEL: test_roundf:753; CHECK:       # %bb.0: # %entry754; CHECK-NEXT:    xsrdpi f1, f1755; CHECK-NEXT:    blr756entry:757  %0 = tail call float @llvm.round.f32(float %f)758  ret float %0759}760 761define dso_local float @test_constrained_roundf(float %f) local_unnamed_addr {762; BE-LABEL: test_constrained_roundf:763; BE:       # %bb.0: # %entry764; BE-NEXT:    xsrdpi f1, f1765; BE-NEXT:    blr766;767; CHECK-LABEL: test_constrained_roundf:768; CHECK:       # %bb.0: # %entry769; CHECK-NEXT:    xsrdpi f1, f1770; CHECK-NEXT:    blr771entry:772  %0 = tail call float @llvm.experimental.constrained.round(float %f, metadata !"fpexcept.ignore")773  ret float %0774}775 776declare float @llvm.round.f32(float)777 778define dso_local double @test_trunc(double %d) local_unnamed_addr {779; BE-LABEL: test_trunc:780; BE:       # %bb.0: # %entry781; BE-NEXT:    xsrdpiz f1, f1782; BE-NEXT:    blr783;784; CHECK-LABEL: test_trunc:785; CHECK:       # %bb.0: # %entry786; CHECK-NEXT:    xsrdpiz f1, f1787; CHECK-NEXT:    blr788entry:789  %0 = tail call double @llvm.trunc.f64(double %d)790  ret double %0791}792 793declare double @llvm.trunc.f64(double)794 795define dso_local float @test_truncf(float %f) local_unnamed_addr {796; BE-LABEL: test_truncf:797; BE:       # %bb.0: # %entry798; BE-NEXT:    xsrdpiz f1, f1799; BE-NEXT:    blr800;801; CHECK-LABEL: test_truncf:802; CHECK:       # %bb.0: # %entry803; CHECK-NEXT:    xsrdpiz f1, f1804; CHECK-NEXT:    blr805entry:806  %0 = tail call float @llvm.trunc.f32(float %f)807  ret float %0808}809 810declare float @llvm.trunc.f32(float)811 812define dso_local double @test_floor(double %d) local_unnamed_addr {813; BE-LABEL: test_floor:814; BE:       # %bb.0: # %entry815; BE-NEXT:    xsrdpim f1, f1816; BE-NEXT:    blr817;818; CHECK-LABEL: test_floor:819; CHECK:       # %bb.0: # %entry820; CHECK-NEXT:    xsrdpim f1, f1821; CHECK-NEXT:    blr822entry:823  %0 = tail call double @llvm.floor.f64(double %d)824  ret double %0825}826 827declare double @llvm.floor.f64(double)828 829define dso_local float @test_floorf(float %f) local_unnamed_addr {830; BE-LABEL: test_floorf:831; BE:       # %bb.0: # %entry832; BE-NEXT:    xsrdpim f1, f1833; BE-NEXT:    blr834;835; CHECK-LABEL: test_floorf:836; CHECK:       # %bb.0: # %entry837; CHECK-NEXT:    xsrdpim f1, f1838; CHECK-NEXT:    blr839entry:840  %0 = tail call float @llvm.floor.f32(float %f)841  ret float %0842}843 844declare float @llvm.floor.f32(float)845 846define dso_local double @test_ceil(double %d) local_unnamed_addr {847; BE-LABEL: test_ceil:848; BE:       # %bb.0: # %entry849; BE-NEXT:    xsrdpip f1, f1850; BE-NEXT:    blr851;852; CHECK-LABEL: test_ceil:853; CHECK:       # %bb.0: # %entry854; CHECK-NEXT:    xsrdpip f1, f1855; CHECK-NEXT:    blr856entry:857  %0 = tail call double @llvm.ceil.f64(double %d)858  ret double %0859}860 861declare double @llvm.ceil.f64(double)862 863define dso_local float @test_ceilf(float %f) local_unnamed_addr {864; BE-LABEL: test_ceilf:865; BE:       # %bb.0: # %entry866; BE-NEXT:    xsrdpip f1, f1867; BE-NEXT:    blr868;869; CHECK-LABEL: test_ceilf:870; CHECK:       # %bb.0: # %entry871; CHECK-NEXT:    xsrdpip f1, f1872; CHECK-NEXT:    blr873entry:874  %0 = tail call float @llvm.ceil.f32(float %f)875  ret float %0876}877 878declare float @llvm.ceil.f32(float)879 880define dso_local double @test_rint(double %d) local_unnamed_addr {881; BE-LABEL: test_rint:882; BE:       # %bb.0: # %entry883; BE-NEXT:    xsrdpic f1, f1884; BE-NEXT:    blr885;886; CHECK-LABEL: test_rint:887; CHECK:       # %bb.0: # %entry888; CHECK-NEXT:    xsrdpic f1, f1889; CHECK-NEXT:    blr890entry:891  %0 = tail call double @llvm.rint.f64(double %d)892  ret double %0893}894 895declare double @llvm.rint.f64(double)896 897define dso_local float @test_rintf(float %f) local_unnamed_addr {898; BE-LABEL: test_rintf:899; BE:       # %bb.0: # %entry900; BE-NEXT:    xsrdpic f1, f1901; BE-NEXT:    blr902;903; CHECK-LABEL: test_rintf:904; CHECK:       # %bb.0: # %entry905; CHECK-NEXT:    xsrdpic f1, f1906; CHECK-NEXT:    blr907entry:908  %0 = tail call float @llvm.rint.f32(float %f)909  ret float %0910}911 912declare float @llvm.rint.f32(float)913