brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.7 KiB · e7a3f79 Raw
939 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv64 -global-isel < %s \3; RUN:   | FileCheck -check-prefixes=CHECK,RV64I %s4; RUN: llc -mtriple=riscv64 -global-isel -mattr=+d < %s \5; RUN:   | FileCheck -check-prefixes=CHECK,RV64D %s6 7; FIXME: Support RV32.8 9define fp128 @fadd(fp128 %x, fp128 %y) nounwind {10; CHECK-LABEL: fadd:11; CHECK:       # %bb.0:12; CHECK-NEXT:    addi sp, sp, -1613; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill14; CHECK-NEXT:    call __addtf315; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload16; CHECK-NEXT:    addi sp, sp, 1617; CHECK-NEXT:    ret18 %a = fadd fp128 %x, %y19  ret fp128 %a20}21 22define fp128 @fsub(fp128 %x, fp128 %y) nounwind {23; CHECK-LABEL: fsub:24; CHECK:       # %bb.0:25; CHECK-NEXT:    addi sp, sp, -1626; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill27; CHECK-NEXT:    call __subtf328; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload29; CHECK-NEXT:    addi sp, sp, 1630; CHECK-NEXT:    ret31  %a = fsub fp128 %x, %y32  ret fp128 %a33}34 35define fp128 @fmul(fp128 %x, fp128 %y) nounwind {36; CHECK-LABEL: fmul:37; CHECK:       # %bb.0:38; CHECK-NEXT:    addi sp, sp, -1639; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill40; CHECK-NEXT:    call __multf341; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload42; CHECK-NEXT:    addi sp, sp, 1643; CHECK-NEXT:    ret44  %a = fmul fp128 %x, %y45  ret fp128 %a46}47 48define fp128 @fdiv(fp128 %x, fp128 %y) nounwind {49; CHECK-LABEL: fdiv:50; CHECK:       # %bb.0:51; CHECK-NEXT:    addi sp, sp, -1652; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill53; CHECK-NEXT:    call __divtf354; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload55; CHECK-NEXT:    addi sp, sp, 1656; CHECK-NEXT:    ret57  %a = fdiv fp128 %x, %y58  ret fp128 %a59}60 61define fp128 @frem(fp128 %x, fp128 %y) nounwind {62; CHECK-LABEL: frem:63; CHECK:       # %bb.0:64; CHECK-NEXT:    addi sp, sp, -1665; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill66; CHECK-NEXT:    call fmodl67; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload68; CHECK-NEXT:    addi sp, sp, 1669; CHECK-NEXT:    ret70  %a = frem fp128 %x, %y71  ret fp128 %a72}73 74define fp128 @fma(fp128 %x, fp128 %y, fp128 %z) nounwind {75; CHECK-LABEL: fma:76; CHECK:       # %bb.0:77; CHECK-NEXT:    addi sp, sp, -1678; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill79; CHECK-NEXT:    call fmal80; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload81; CHECK-NEXT:    addi sp, sp, 1682; CHECK-NEXT:    ret83  %a = call fp128 @llvm.fma.f128(fp128 %x, fp128 %y, fp128 %z)84  ret fp128 %a85}86 87define fp128 @fneg(fp128 %x) {88; CHECK-LABEL: fneg:89; CHECK:       # %bb.0:90; CHECK-NEXT:    li a2, -191; CHECK-NEXT:    slli a2, a2, 6392; CHECK-NEXT:    xor a1, a1, a293; CHECK-NEXT:    ret94  %a = fneg fp128 %x95  ret fp128 %a96}97 98define fp128 @fabs(fp128 %x) {99; CHECK-LABEL: fabs:100; CHECK:       # %bb.0:101; CHECK-NEXT:    slli a1, a1, 1102; CHECK-NEXT:    srli a1, a1, 1103; CHECK-NEXT:    ret104  %a = call fp128 @llvm.fabs.f128(fp128 %x)105  ret fp128 %a106}107 108define fp128 @fcopysign(fp128 %x, fp128 %y) {109; CHECK-LABEL: fcopysign:110; CHECK:       # %bb.0:111; CHECK-NEXT:    slli a1, a1, 1112; CHECK-NEXT:    srli a3, a3, 63113; CHECK-NEXT:    srli a1, a1, 1114; CHECK-NEXT:    slli a3, a3, 63115; CHECK-NEXT:    or a1, a1, a3116; CHECK-NEXT:    ret117  %a = call fp128 @llvm.copysign.f128(fp128 %x, fp128 %y)118  ret fp128 %a119}120 121define i1 @fcmp(fp128 %x, fp128 %y) nounwind {122; CHECK-LABEL: fcmp:123; CHECK:       # %bb.0:124; CHECK-NEXT:    addi sp, sp, -16125; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill126; CHECK-NEXT:    call __eqtf2127; CHECK-NEXT:    sext.w a0, a0128; CHECK-NEXT:    seqz a0, a0129; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload130; CHECK-NEXT:    addi sp, sp, 16131; CHECK-NEXT:    ret132  %a = fcmp oeq fp128 %x, %y133  ret i1 %a134}135 136define fp128 @constant(fp128 %x) nounwind {137; CHECK-LABEL: constant:138; CHECK:       # %bb.0:139; CHECK-NEXT:    addi sp, sp, -16140; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill141; CHECK-NEXT:    lui a2, %hi(.LCPI10_0)142; CHECK-NEXT:    addi a3, a2, %lo(.LCPI10_0)143; CHECK-NEXT:    ld a2, 0(a3)144; CHECK-NEXT:    ld a3, 8(a3)145; CHECK-NEXT:    call __addtf3146; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload147; CHECK-NEXT:    addi sp, sp, 16148; CHECK-NEXT:    ret149  %a = fadd fp128 %x, 0xL00000000000000007FFF000000000000150  ret fp128 %a151}152 153define fp128 @fpext_f32(float %x, float %y) nounwind {154; RV64I-LABEL: fpext_f32:155; RV64I:       # %bb.0:156; RV64I-NEXT:    addi sp, sp, -16157; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill158; RV64I-NEXT:    call __addsf3159; RV64I-NEXT:    call __extendsftf2160; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload161; RV64I-NEXT:    addi sp, sp, 16162; RV64I-NEXT:    ret163;164; RV64D-LABEL: fpext_f32:165; RV64D:       # %bb.0:166; RV64D-NEXT:    addi sp, sp, -16167; RV64D-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill168; RV64D-NEXT:    fadd.s fa0, fa0, fa1169; RV64D-NEXT:    call __extendsftf2170; RV64D-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload171; RV64D-NEXT:    addi sp, sp, 16172; RV64D-NEXT:    ret173  %a = fadd float %x, %y174  %b = fpext float %a to fp128175  ret fp128 %b176}177 178define fp128 @fpext_f64(double %x, double %y) nounwind {179; RV64I-LABEL: fpext_f64:180; RV64I:       # %bb.0:181; RV64I-NEXT:    addi sp, sp, -16182; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill183; RV64I-NEXT:    call __adddf3184; RV64I-NEXT:    call __extenddftf2185; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload186; RV64I-NEXT:    addi sp, sp, 16187; RV64I-NEXT:    ret188;189; RV64D-LABEL: fpext_f64:190; RV64D:       # %bb.0:191; RV64D-NEXT:    addi sp, sp, -16192; RV64D-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill193; RV64D-NEXT:    fadd.d fa0, fa0, fa1194; RV64D-NEXT:    call __extenddftf2195; RV64D-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload196; RV64D-NEXT:    addi sp, sp, 16197; RV64D-NEXT:    ret198  %a = fadd double %x, %y199  %b = fpext double %a to fp128200  ret fp128 %b201}202 203define float @fptrunc_f32(fp128 %x, float %y) nounwind {204; RV64I-LABEL: fptrunc_f32:205; RV64I:       # %bb.0:206; RV64I-NEXT:    addi sp, sp, -16207; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill208; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill209; RV64I-NEXT:    mv s0, a2210; RV64I-NEXT:    call __trunctfsf2211; RV64I-NEXT:    mv a1, s0212; RV64I-NEXT:    call __addsf3213; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload214; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload215; RV64I-NEXT:    addi sp, sp, 16216; RV64I-NEXT:    ret217;218; RV64D-LABEL: fptrunc_f32:219; RV64D:       # %bb.0:220; RV64D-NEXT:    addi sp, sp, -16221; RV64D-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill222; RV64D-NEXT:    fsd fs0, 0(sp) # 8-byte Folded Spill223; RV64D-NEXT:    fmv.s fs0, fa0224; RV64D-NEXT:    call __trunctfsf2225; RV64D-NEXT:    fadd.s fa0, fa0, fs0226; RV64D-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload227; RV64D-NEXT:    fld fs0, 0(sp) # 8-byte Folded Reload228; RV64D-NEXT:    addi sp, sp, 16229; RV64D-NEXT:    ret230  %a = fptrunc fp128 %x to float231  %b = fadd float %a, %y232  ret float %b233}234 235define double @fptrunc_f64(fp128 %x, double %y) nounwind {236; RV64I-LABEL: fptrunc_f64:237; RV64I:       # %bb.0:238; RV64I-NEXT:    addi sp, sp, -16239; RV64I-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill240; RV64I-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill241; RV64I-NEXT:    mv s0, a2242; RV64I-NEXT:    call __trunctfdf2243; RV64I-NEXT:    mv a1, s0244; RV64I-NEXT:    call __adddf3245; RV64I-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload246; RV64I-NEXT:    ld s0, 0(sp) # 8-byte Folded Reload247; RV64I-NEXT:    addi sp, sp, 16248; RV64I-NEXT:    ret249;250; RV64D-LABEL: fptrunc_f64:251; RV64D:       # %bb.0:252; RV64D-NEXT:    addi sp, sp, -16253; RV64D-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill254; RV64D-NEXT:    fsd fs0, 0(sp) # 8-byte Folded Spill255; RV64D-NEXT:    fmv.d fs0, fa0256; RV64D-NEXT:    call __trunctfdf2257; RV64D-NEXT:    fadd.d fa0, fa0, fs0258; RV64D-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload259; RV64D-NEXT:    fld fs0, 0(sp) # 8-byte Folded Reload260; RV64D-NEXT:    addi sp, sp, 16261; RV64D-NEXT:    ret262  %a = fptrunc fp128 %x to double263  %b = fadd double %a, %y264  ret double %b265}266 267define i8 @fptosi_i8(fp128 %x) nounwind {268; CHECK-LABEL: fptosi_i8:269; CHECK:       # %bb.0:270; CHECK-NEXT:    addi sp, sp, -16271; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill272; CHECK-NEXT:    call __fixtfsi273; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload274; CHECK-NEXT:    addi sp, sp, 16275; CHECK-NEXT:    ret276  %a = fptosi fp128 %x to i8277  ret i8 %a278}279 280define i16 @fptosi_i16(fp128 %x) nounwind {281; CHECK-LABEL: fptosi_i16:282; CHECK:       # %bb.0:283; CHECK-NEXT:    addi sp, sp, -16284; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill285; CHECK-NEXT:    call __fixtfsi286; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload287; CHECK-NEXT:    addi sp, sp, 16288; CHECK-NEXT:    ret289  %a = fptosi fp128 %x to i16290  ret i16 %a291}292 293define i32 @fptosi_i32(fp128 %x) nounwind {294; CHECK-LABEL: fptosi_i32:295; CHECK:       # %bb.0:296; CHECK-NEXT:    addi sp, sp, -16297; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill298; CHECK-NEXT:    call __fixtfsi299; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload300; CHECK-NEXT:    addi sp, sp, 16301; CHECK-NEXT:    ret302  %a = fptosi fp128 %x to i32303  ret i32 %a304}305 306define i64 @fptosi_i64(fp128 %x) nounwind {307; CHECK-LABEL: fptosi_i64:308; CHECK:       # %bb.0:309; CHECK-NEXT:    addi sp, sp, -16310; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill311; CHECK-NEXT:    call __fixtfdi312; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload313; CHECK-NEXT:    addi sp, sp, 16314; CHECK-NEXT:    ret315  %a = fptosi fp128 %x to i64316  ret i64 %a317}318 319define i128 @fptosi_i128(fp128 %x) nounwind {320; CHECK-LABEL: fptosi_i128:321; CHECK:       # %bb.0:322; CHECK-NEXT:    addi sp, sp, -16323; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill324; CHECK-NEXT:    call __fixtfti325; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload326; CHECK-NEXT:    addi sp, sp, 16327; CHECK-NEXT:    ret328  %a = fptosi fp128 %x to i128329  ret i128 %a330}331 332define i8 @fptoui_i8(fp128 %x) nounwind {333; CHECK-LABEL: fptoui_i8:334; CHECK:       # %bb.0:335; CHECK-NEXT:    addi sp, sp, -16336; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill337; CHECK-NEXT:    call __fixunstfsi338; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload339; CHECK-NEXT:    addi sp, sp, 16340; CHECK-NEXT:    ret341  %a = fptoui fp128 %x to i8342  ret i8 %a343}344 345define i16 @fptoui_i16(fp128 %x) nounwind {346; CHECK-LABEL: fptoui_i16:347; CHECK:       # %bb.0:348; CHECK-NEXT:    addi sp, sp, -16349; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill350; CHECK-NEXT:    call __fixunstfsi351; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload352; CHECK-NEXT:    addi sp, sp, 16353; CHECK-NEXT:    ret354  %a = fptoui fp128 %x to i16355  ret i16 %a356}357 358define i32 @fptoui_i32(fp128 %x) nounwind {359; CHECK-LABEL: fptoui_i32:360; CHECK:       # %bb.0:361; CHECK-NEXT:    addi sp, sp, -16362; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill363; CHECK-NEXT:    call __fixunstfsi364; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload365; CHECK-NEXT:    addi sp, sp, 16366; CHECK-NEXT:    ret367  %a = fptoui fp128 %x to i32368  ret i32 %a369}370 371define i64 @fptoui_i64(fp128 %x) nounwind {372; CHECK-LABEL: fptoui_i64:373; CHECK:       # %bb.0:374; CHECK-NEXT:    addi sp, sp, -16375; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill376; CHECK-NEXT:    call __fixunstfdi377; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload378; CHECK-NEXT:    addi sp, sp, 16379; CHECK-NEXT:    ret380  %a = fptoui fp128 %x to i64381  ret i64 %a382}383 384define i128 @fptoui_i128(fp128 %x) nounwind {385; CHECK-LABEL: fptoui_i128:386; CHECK:       # %bb.0:387; CHECK-NEXT:    addi sp, sp, -16388; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill389; CHECK-NEXT:    call __fixunstfti390; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload391; CHECK-NEXT:    addi sp, sp, 16392; CHECK-NEXT:    ret393  %a = fptoui fp128 %x to i128394  ret i128 %a395}396 397define fp128 @sitofp_i8(i8 %x) nounwind {398; CHECK-LABEL: sitofp_i8:399; CHECK:       # %bb.0:400; CHECK-NEXT:    addi sp, sp, -16401; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill402; CHECK-NEXT:    slli a0, a0, 56403; CHECK-NEXT:    srai a0, a0, 56404; CHECK-NEXT:    call __floatsitf405; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload406; CHECK-NEXT:    addi sp, sp, 16407; CHECK-NEXT:    ret408  %a = sitofp i8 %x to fp128409  ret fp128 %a410}411 412define fp128 @sitofp_i16(i16 %x) nounwind {413; CHECK-LABEL: sitofp_i16:414; CHECK:       # %bb.0:415; CHECK-NEXT:    addi sp, sp, -16416; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill417; CHECK-NEXT:    slli a0, a0, 48418; CHECK-NEXT:    srai a0, a0, 48419; CHECK-NEXT:    call __floatsitf420; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload421; CHECK-NEXT:    addi sp, sp, 16422; CHECK-NEXT:    ret423  %a = sitofp i16 %x to fp128424  ret fp128 %a425}426 427define fp128 @sitofp_i32(i32 %x) nounwind {428; CHECK-LABEL: sitofp_i32:429; CHECK:       # %bb.0:430; CHECK-NEXT:    addi sp, sp, -16431; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill432; CHECK-NEXT:    sext.w a0, a0433; CHECK-NEXT:    call __floatsitf434; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload435; CHECK-NEXT:    addi sp, sp, 16436; CHECK-NEXT:    ret437  %a = sitofp i32 %x to fp128438  ret fp128 %a439}440 441define fp128 @sitofp_i64(i64 %x) nounwind {442; CHECK-LABEL: sitofp_i64:443; CHECK:       # %bb.0:444; CHECK-NEXT:    addi sp, sp, -16445; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill446; CHECK-NEXT:    call __floatditf447; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload448; CHECK-NEXT:    addi sp, sp, 16449; CHECK-NEXT:    ret450  %a = sitofp i64 %x to fp128451  ret fp128 %a452}453 454define fp128 @sitofp_i128(i128 %x) nounwind {455; CHECK-LABEL: sitofp_i128:456; CHECK:       # %bb.0:457; CHECK-NEXT:    addi sp, sp, -16458; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill459; CHECK-NEXT:    call __floattitf460; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload461; CHECK-NEXT:    addi sp, sp, 16462; CHECK-NEXT:    ret463  %a = sitofp i128 %x to fp128464  ret fp128 %a465}466 467define fp128 @uitofp_i8(i8 %x) nounwind {468; CHECK-LABEL: uitofp_i8:469; CHECK:       # %bb.0:470; CHECK-NEXT:    addi sp, sp, -16471; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill472; CHECK-NEXT:    zext.b a0, a0473; CHECK-NEXT:    call __floatunsitf474; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload475; CHECK-NEXT:    addi sp, sp, 16476; CHECK-NEXT:    ret477  %a = uitofp i8 %x to fp128478  ret fp128 %a479}480 481define fp128 @uitofp_i16(i16 %x) nounwind {482; CHECK-LABEL: uitofp_i16:483; CHECK:       # %bb.0:484; CHECK-NEXT:    addi sp, sp, -16485; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill486; CHECK-NEXT:    slli a0, a0, 48487; CHECK-NEXT:    srli a0, a0, 48488; CHECK-NEXT:    call __floatunsitf489; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload490; CHECK-NEXT:    addi sp, sp, 16491; CHECK-NEXT:    ret492  %a = uitofp i16 %x to fp128493  ret fp128 %a494}495 496define fp128 @uitofp_i32(i32 %x) nounwind {497; CHECK-LABEL: uitofp_i32:498; CHECK:       # %bb.0:499; CHECK-NEXT:    addi sp, sp, -16500; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill501; CHECK-NEXT:    sext.w a0, a0502; CHECK-NEXT:    call __floatunsitf503; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload504; CHECK-NEXT:    addi sp, sp, 16505; CHECK-NEXT:    ret506  %a = uitofp i32 %x to fp128507  ret fp128 %a508}509 510define fp128 @uitofp_i64(i64 %x) nounwind {511; CHECK-LABEL: uitofp_i64:512; CHECK:       # %bb.0:513; CHECK-NEXT:    addi sp, sp, -16514; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill515; CHECK-NEXT:    call __floatunditf516; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload517; CHECK-NEXT:    addi sp, sp, 16518; CHECK-NEXT:    ret519  %a = uitofp i64 %x to fp128520  ret fp128 %a521}522 523define fp128 @uitofp_i128(i128 %x) nounwind {524; CHECK-LABEL: uitofp_i128:525; CHECK:       # %bb.0:526; CHECK-NEXT:    addi sp, sp, -16527; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill528; CHECK-NEXT:    call __floatuntitf529; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload530; CHECK-NEXT:    addi sp, sp, 16531; CHECK-NEXT:    ret532  %a = uitofp i128 %x to fp128533  ret fp128 %a534}535 536define fp128 @sqrt(fp128 %a) nounwind {537; CHECK-LABEL: sqrt:538; CHECK:       # %bb.0:539; CHECK-NEXT:    addi sp, sp, -16540; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill541; CHECK-NEXT:    call sqrtl542; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload543; CHECK-NEXT:    addi sp, sp, 16544; CHECK-NEXT:    ret545  %1 = call fp128 @llvm.sqrt.f128(fp128 %a)546  ret fp128 %1547}548 549define fp128 @powi(fp128 %a, i32 %b) nounwind {550; CHECK-LABEL: powi:551; CHECK:       # %bb.0:552; CHECK-NEXT:    addi sp, sp, -16553; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill554; CHECK-NEXT:    sext.w a2, a2555; CHECK-NEXT:    call __powitf2556; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload557; CHECK-NEXT:    addi sp, sp, 16558; CHECK-NEXT:    ret559  %1 = call fp128 @llvm.powi.f128.i32(fp128 %a, i32 %b)560  ret fp128 %1561}562 563define fp128 @sin(fp128 %a) nounwind {564; CHECK-LABEL: sin:565; CHECK:       # %bb.0:566; CHECK-NEXT:    addi sp, sp, -16567; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill568; CHECK-NEXT:    call sinl569; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload570; CHECK-NEXT:    addi sp, sp, 16571; CHECK-NEXT:    ret572  %1 = call fp128 @llvm.sin.f128(fp128 %a)573  ret fp128 %1574}575 576define fp128 @cos(fp128 %a) nounwind {577; CHECK-LABEL: cos:578; CHECK:       # %bb.0:579; CHECK-NEXT:    addi sp, sp, -16580; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill581; CHECK-NEXT:    call cosl582; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload583; CHECK-NEXT:    addi sp, sp, 16584; CHECK-NEXT:    ret585  %1 = call fp128 @llvm.cos.f128(fp128 %a)586  ret fp128 %1587}588 589define fp128 @pow(fp128 %a, fp128 %b) nounwind {590; CHECK-LABEL: pow:591; CHECK:       # %bb.0:592; CHECK-NEXT:    addi sp, sp, -16593; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill594; CHECK-NEXT:    call powl595; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload596; CHECK-NEXT:    addi sp, sp, 16597; CHECK-NEXT:    ret598  %1 = call fp128 @llvm.pow.f128(fp128 %a, fp128 %b)599  ret fp128 %1600}601 602define fp128 @exp(fp128 %a) nounwind {603; CHECK-LABEL: exp:604; CHECK:       # %bb.0:605; CHECK-NEXT:    addi sp, sp, -16606; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill607; CHECK-NEXT:    call expl608; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload609; CHECK-NEXT:    addi sp, sp, 16610; CHECK-NEXT:    ret611  %1 = call fp128 @llvm.exp.f128(fp128 %a)612  ret fp128 %1613}614 615define fp128 @exp2(fp128 %a) nounwind {616; CHECK-LABEL: exp2:617; CHECK:       # %bb.0:618; CHECK-NEXT:    addi sp, sp, -16619; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill620; CHECK-NEXT:    call exp2l621; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload622; CHECK-NEXT:    addi sp, sp, 16623; CHECK-NEXT:    ret624  %1 = call fp128 @llvm.exp2.f128(fp128 %a)625  ret fp128 %1626}627 628define fp128 @exp10(fp128 %a) nounwind {629; CHECK-LABEL: exp10:630; CHECK:       # %bb.0:631; CHECK-NEXT:    addi sp, sp, -16632; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill633; CHECK-NEXT:    call exp10l634; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload635; CHECK-NEXT:    addi sp, sp, 16636; CHECK-NEXT:    ret637  %1 = call fp128 @llvm.exp10.f128(fp128 %a)638  ret fp128 %1639}640 641define fp128 @log(fp128 %a) nounwind {642; CHECK-LABEL: log:643; CHECK:       # %bb.0:644; CHECK-NEXT:    addi sp, sp, -16645; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill646; CHECK-NEXT:    call logl647; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload648; CHECK-NEXT:    addi sp, sp, 16649; CHECK-NEXT:    ret650  %1 = call fp128 @llvm.log.f128(fp128 %a)651  ret fp128 %1652}653 654define fp128 @log10(fp128 %a) nounwind {655; CHECK-LABEL: log10:656; CHECK:       # %bb.0:657; CHECK-NEXT:    addi sp, sp, -16658; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill659; CHECK-NEXT:    call log10l660; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload661; CHECK-NEXT:    addi sp, sp, 16662; CHECK-NEXT:    ret663  %1 = call fp128 @llvm.log10.f128(fp128 %a)664  ret fp128 %1665}666 667define fp128 @log2(fp128 %a) nounwind {668; CHECK-LABEL: log2:669; CHECK:       # %bb.0:670; CHECK-NEXT:    addi sp, sp, -16671; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill672; CHECK-NEXT:    call log2l673; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload674; CHECK-NEXT:    addi sp, sp, 16675; CHECK-NEXT:    ret676  %1 = call fp128 @llvm.log2.f128(fp128 %a)677  ret fp128 %1678}679 680define fp128 @minnum(fp128 %a, fp128 %b) nounwind {681; CHECK-LABEL: minnum:682; CHECK:       # %bb.0:683; CHECK-NEXT:    addi sp, sp, -16684; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill685; CHECK-NEXT:    call fminl686; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload687; CHECK-NEXT:    addi sp, sp, 16688; CHECK-NEXT:    ret689  %1 = call fp128 @llvm.minnum.f128(fp128 %a, fp128 %b)690  ret fp128 %1691}692 693define fp128 @maxnum(fp128 %a, fp128 %b) nounwind {694; CHECK-LABEL: maxnum:695; CHECK:       # %bb.0:696; CHECK-NEXT:    addi sp, sp, -16697; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill698; CHECK-NEXT:    call fmaxl699; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload700; CHECK-NEXT:    addi sp, sp, 16701; CHECK-NEXT:    ret702  %1 = call fp128 @llvm.maxnum.f128(fp128 %a, fp128 %b)703  ret fp128 %1704}705 706define fp128 @floor(fp128 %a) nounwind {707; CHECK-LABEL: floor:708; CHECK:       # %bb.0:709; CHECK-NEXT:    addi sp, sp, -16710; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill711; CHECK-NEXT:    call floorl712; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload713; CHECK-NEXT:    addi sp, sp, 16714; CHECK-NEXT:    ret715  %1 = call fp128 @llvm.floor.f128(fp128 %a)716  ret fp128 %1717}718 719define fp128 @ceil(fp128 %a) nounwind {720; CHECK-LABEL: ceil:721; CHECK:       # %bb.0:722; CHECK-NEXT:    addi sp, sp, -16723; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill724; CHECK-NEXT:    call ceill725; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload726; CHECK-NEXT:    addi sp, sp, 16727; CHECK-NEXT:    ret728  %1 = call fp128 @llvm.ceil.f128(fp128 %a)729  ret fp128 %1730}731 732define fp128 @trunc(fp128 %a) nounwind {733; CHECK-LABEL: trunc:734; CHECK:       # %bb.0:735; CHECK-NEXT:    addi sp, sp, -16736; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill737; CHECK-NEXT:    call truncl738; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload739; CHECK-NEXT:    addi sp, sp, 16740; CHECK-NEXT:    ret741  %1 = call fp128 @llvm.trunc.f128(fp128 %a)742  ret fp128 %1743}744 745define fp128 @rint(fp128 %a) nounwind {746; CHECK-LABEL: rint:747; CHECK:       # %bb.0:748; CHECK-NEXT:    addi sp, sp, -16749; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill750; CHECK-NEXT:    call rintl751; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload752; CHECK-NEXT:    addi sp, sp, 16753; CHECK-NEXT:    ret754  %1 = call fp128 @llvm.rint.f128(fp128 %a)755  ret fp128 %1756}757 758define fp128 @nearbyint(fp128 %a) nounwind {759; CHECK-LABEL: nearbyint:760; CHECK:       # %bb.0:761; CHECK-NEXT:    addi sp, sp, -16762; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill763; CHECK-NEXT:    call nearbyintl764; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload765; CHECK-NEXT:    addi sp, sp, 16766; CHECK-NEXT:    ret767  %1 = call fp128 @llvm.nearbyint.f128(fp128 %a)768  ret fp128 %1769}770 771define fp128 @round(fp128 %a) nounwind {772; CHECK-LABEL: round:773; CHECK:       # %bb.0:774; CHECK-NEXT:    addi sp, sp, -16775; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill776; CHECK-NEXT:    call roundl777; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload778; CHECK-NEXT:    addi sp, sp, 16779; CHECK-NEXT:    ret780  %1 = call fp128 @llvm.round.f128(fp128 %a)781  ret fp128 %1782}783 784define fp128 @roundeven(fp128 %a) nounwind {785; CHECK-LABEL: roundeven:786; CHECK:       # %bb.0:787; CHECK-NEXT:    addi sp, sp, -16788; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill789; CHECK-NEXT:    call roundevenl790; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload791; CHECK-NEXT:    addi sp, sp, 16792; CHECK-NEXT:    ret793  %1 = call fp128 @llvm.roundeven.f128(fp128 %a)794  ret fp128 %1795}796 797define fp128 @tan(fp128 %a) nounwind {798; CHECK-LABEL: tan:799; CHECK:       # %bb.0:800; CHECK-NEXT:    addi sp, sp, -16801; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill802; CHECK-NEXT:    call tanl803; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload804; CHECK-NEXT:    addi sp, sp, 16805; CHECK-NEXT:    ret806  %1 = call fp128 @llvm.tan.f128(fp128 %a)807  ret fp128 %1808}809 810define fp128 @ldexp_fp128(fp128 %x, i32 %y) nounwind {811; CHECK-LABEL: ldexp_fp128:812; CHECK:       # %bb.0:813; CHECK-NEXT:    addi sp, sp, -16814; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill815; CHECK-NEXT:    sext.w a2, a2816; CHECK-NEXT:    call ldexpl817; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload818; CHECK-NEXT:    addi sp, sp, 16819; CHECK-NEXT:    ret820  %z = call fp128 @llvm.ldexp.f128.i32(fp128 %x, i32 %y)821  ret fp128 %z822}823 824define fp128 @asin(fp128 %a) nounwind {825; CHECK-LABEL: asin:826; CHECK:       # %bb.0:827; CHECK-NEXT:    addi sp, sp, -16828; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill829; CHECK-NEXT:    call asinl830; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload831; CHECK-NEXT:    addi sp, sp, 16832; CHECK-NEXT:    ret833  %1 = call fp128 @llvm.asin.f128(fp128 %a)834  ret fp128 %1835}836 837define fp128 @acos(fp128 %a) nounwind {838; CHECK-LABEL: acos:839; CHECK:       # %bb.0:840; CHECK-NEXT:    addi sp, sp, -16841; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill842; CHECK-NEXT:    call acosl843; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload844; CHECK-NEXT:    addi sp, sp, 16845; CHECK-NEXT:    ret846  %1 = call fp128 @llvm.acos.f128(fp128 %a)847  ret fp128 %1848}849 850define fp128 @atan(fp128 %a) nounwind {851; CHECK-LABEL: atan:852; CHECK:       # %bb.0:853; CHECK-NEXT:    addi sp, sp, -16854; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill855; CHECK-NEXT:    call atanl856; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload857; CHECK-NEXT:    addi sp, sp, 16858; CHECK-NEXT:    ret859  %1 = call fp128 @llvm.atan.f128(fp128 %a)860  ret fp128 %1861}862 863define fp128 @atan2(fp128 %a, fp128 %b) nounwind {864; CHECK-LABEL: atan2:865; CHECK:       # %bb.0:866; CHECK-NEXT:    addi sp, sp, -16867; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill868; CHECK-NEXT:    call atan2l869; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload870; CHECK-NEXT:    addi sp, sp, 16871; CHECK-NEXT:    ret872  %1 = call fp128 @llvm.atan2.f128(fp128 %a, fp128 %b)873  ret fp128 %1874}875 876define fp128 @sinh(fp128 %a) nounwind {877; CHECK-LABEL: sinh:878; CHECK:       # %bb.0:879; CHECK-NEXT:    addi sp, sp, -16880; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill881; CHECK-NEXT:    call sinhl882; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload883; CHECK-NEXT:    addi sp, sp, 16884; CHECK-NEXT:    ret885  %1 = call fp128 @llvm.sinh.f128(fp128 %a)886  ret fp128 %1887}888 889define fp128 @cosh(fp128 %a) nounwind {890; CHECK-LABEL: cosh:891; CHECK:       # %bb.0:892; CHECK-NEXT:    addi sp, sp, -16893; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill894; CHECK-NEXT:    call coshl895; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload896; CHECK-NEXT:    addi sp, sp, 16897; CHECK-NEXT:    ret898  %1 = call fp128 @llvm.cosh.f128(fp128 %a)899  ret fp128 %1900}901 902define fp128 @tanh(fp128 %a) nounwind {903; CHECK-LABEL: tanh:904; CHECK:       # %bb.0:905; CHECK-NEXT:    addi sp, sp, -16906; CHECK-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill907; CHECK-NEXT:    call tanhl908; CHECK-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload909; CHECK-NEXT:    addi sp, sp, 16910; CHECK-NEXT:    ret911  %1 = call fp128 @llvm.tanh.f128(fp128 %a)912  ret fp128 %1913}914 915define { fp128, fp128 } @modf(fp128 %a) nounwind {916; CHECK-LABEL: modf:917; CHECK:       # %bb.0:918; CHECK-NEXT:    addi sp, sp, -32919; CHECK-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill920; CHECK-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill921; CHECK-NEXT:    mv s0, a0922; CHECK-NEXT:    mv a0, a1923; CHECK-NEXT:    mv a1, a2924; CHECK-NEXT:    mv a2, sp925; CHECK-NEXT:    call modfl926; CHECK-NEXT:    ld a2, 0(sp)927; CHECK-NEXT:    ld a3, 8(sp)928; CHECK-NEXT:    sd a0, 0(s0)929; CHECK-NEXT:    sd a1, 8(s0)930; CHECK-NEXT:    sd a2, 16(s0)931; CHECK-NEXT:    sd a3, 24(s0)932; CHECK-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload933; CHECK-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload934; CHECK-NEXT:    addi sp, sp, 32935; CHECK-NEXT:    ret936  %result = call { fp128, fp128 } @llvm.modf.f128(fp128 %a)937  ret { fp128, fp128 } %result938}939