brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.4 KiB · 3b50105 Raw
303 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=R323; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=R644 5define float @maxnum_f32(float %x, float %y) nounwind {6; R32-LABEL: maxnum_f32:7; R32:       # %bb.0:8; R32-NEXT:    addi sp, sp, -169; R32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill10; R32-NEXT:    call fmaxf11; R32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload12; R32-NEXT:    addi sp, sp, 1613; R32-NEXT:    ret14;15; R64-LABEL: maxnum_f32:16; R64:       # %bb.0:17; R64-NEXT:    addi sp, sp, -1618; R64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill19; R64-NEXT:    call fmaxf20; R64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload21; R64-NEXT:    addi sp, sp, 1622; R64-NEXT:    ret23  %r = call float @llvm.maxnum.f32(float %x, float %y)24  ret float %r25}26 27define float @maxnum_f32_fast(float %x, float %y) nounwind {28; R32-LABEL: maxnum_f32_fast:29; R32:       # %bb.0:30; R32-NEXT:    addi sp, sp, -1631; R32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill32; R32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill33; R32-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill34; R32-NEXT:    mv s1, a135; R32-NEXT:    mv s0, a036; R32-NEXT:    call __gtsf237; R32-NEXT:    bgtz a0, .LBB1_238; R32-NEXT:  # %bb.1:39; R32-NEXT:    mv s0, s140; R32-NEXT:  .LBB1_2:41; R32-NEXT:    mv a0, s042; R32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload43; R32-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload44; R32-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload45; R32-NEXT:    addi sp, sp, 1646; R32-NEXT:    ret47;48; R64-LABEL: maxnum_f32_fast:49; R64:       # %bb.0:50; R64-NEXT:    addi sp, sp, -3251; R64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill52; R64-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill53; R64-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill54; R64-NEXT:    mv s1, a155; R64-NEXT:    mv s0, a056; R64-NEXT:    call __gtsf257; R64-NEXT:    bgtz a0, .LBB1_258; R64-NEXT:  # %bb.1:59; R64-NEXT:    mv s0, s160; R64-NEXT:  .LBB1_2:61; R64-NEXT:    mv a0, s062; R64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload63; R64-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload64; R64-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload65; R64-NEXT:    addi sp, sp, 3266; R64-NEXT:    ret67  %r = call fast float @llvm.maxnum.f32(float %x, float %y)68  ret float %r69}70 71define double @maxnum_f64(double %x, double %y) nounwind {72; R32-LABEL: maxnum_f64:73; R32:       # %bb.0:74; R32-NEXT:    addi sp, sp, -1675; R32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill76; R32-NEXT:    call fmax77; R32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload78; R32-NEXT:    addi sp, sp, 1679; R32-NEXT:    ret80;81; R64-LABEL: maxnum_f64:82; R64:       # %bb.0:83; R64-NEXT:    addi sp, sp, -1684; R64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill85; R64-NEXT:    call fmax86; R64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload87; R64-NEXT:    addi sp, sp, 1688; R64-NEXT:    ret89  %r = call double @llvm.maxnum.f64(double %x, double %y)90  ret double %r91}92 93define double @maxnum_f64_nnan(double %x, double %y) nounwind {94; R32-LABEL: maxnum_f64_nnan:95; R32:       # %bb.0:96; R32-NEXT:    addi sp, sp, -3297; R32-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill98; R32-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill99; R32-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill100; R32-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill101; R32-NEXT:    sw s3, 12(sp) # 4-byte Folded Spill102; R32-NEXT:    mv s1, a3103; R32-NEXT:    mv s2, a2104; R32-NEXT:    mv s0, a1105; R32-NEXT:    mv s3, a0106; R32-NEXT:    call __gtdf2107; R32-NEXT:    mv a1, a0108; R32-NEXT:    mv a0, s3109; R32-NEXT:    bgtz a1, .LBB3_2110; R32-NEXT:  # %bb.1:111; R32-NEXT:    mv s3, s2112; R32-NEXT:  .LBB3_2:113; R32-NEXT:    mv a1, s0114; R32-NEXT:    mv a2, s2115; R32-NEXT:    mv a3, s1116; R32-NEXT:    call __gtdf2117; R32-NEXT:    bgtz a0, .LBB3_4118; R32-NEXT:  # %bb.3:119; R32-NEXT:    mv s0, s1120; R32-NEXT:  .LBB3_4:121; R32-NEXT:    mv a0, s3122; R32-NEXT:    mv a1, s0123; R32-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload124; R32-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload125; R32-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload126; R32-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload127; R32-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload128; R32-NEXT:    addi sp, sp, 32129; R32-NEXT:    ret130;131; R64-LABEL: maxnum_f64_nnan:132; R64:       # %bb.0:133; R64-NEXT:    addi sp, sp, -32134; R64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill135; R64-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill136; R64-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill137; R64-NEXT:    mv s1, a1138; R64-NEXT:    mv s0, a0139; R64-NEXT:    call __gtdf2140; R64-NEXT:    bgtz a0, .LBB3_2141; R64-NEXT:  # %bb.1:142; R64-NEXT:    mv s0, s1143; R64-NEXT:  .LBB3_2:144; R64-NEXT:    mv a0, s0145; R64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload146; R64-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload147; R64-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload148; R64-NEXT:    addi sp, sp, 32149; R64-NEXT:    ret150  %r = call nnan double @llvm.maxnum.f64(double %x, double %y)151  ret double %r152}153 154define float @minnum_f32(float %x, float %y) nounwind {155; R32-LABEL: minnum_f32:156; R32:       # %bb.0:157; R32-NEXT:    addi sp, sp, -16158; R32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill159; R32-NEXT:    call fminf160; R32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload161; R32-NEXT:    addi sp, sp, 16162; R32-NEXT:    ret163;164; R64-LABEL: minnum_f32:165; R64:       # %bb.0:166; R64-NEXT:    addi sp, sp, -16167; R64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill168; R64-NEXT:    call fminf169; R64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload170; R64-NEXT:    addi sp, sp, 16171; R64-NEXT:    ret172  %r = call float @llvm.minnum.f32(float %x, float %y)173  ret float %r174}175 176define float @minnum_f32_nnan(float %x, float %y) nounwind {177; R32-LABEL: minnum_f32_nnan:178; R32:       # %bb.0:179; R32-NEXT:    addi sp, sp, -16180; R32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill181; R32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill182; R32-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill183; R32-NEXT:    mv s1, a1184; R32-NEXT:    mv s0, a0185; R32-NEXT:    call __ltsf2186; R32-NEXT:    bltz a0, .LBB5_2187; R32-NEXT:  # %bb.1:188; R32-NEXT:    mv s0, s1189; R32-NEXT:  .LBB5_2:190; R32-NEXT:    mv a0, s0191; R32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload192; R32-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload193; R32-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload194; R32-NEXT:    addi sp, sp, 16195; R32-NEXT:    ret196;197; R64-LABEL: minnum_f32_nnan:198; R64:       # %bb.0:199; R64-NEXT:    addi sp, sp, -32200; R64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill201; R64-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill202; R64-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill203; R64-NEXT:    mv s1, a1204; R64-NEXT:    mv s0, a0205; R64-NEXT:    call __ltsf2206; R64-NEXT:    bltz a0, .LBB5_2207; R64-NEXT:  # %bb.1:208; R64-NEXT:    mv s0, s1209; R64-NEXT:  .LBB5_2:210; R64-NEXT:    mv a0, s0211; R64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload212; R64-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload213; R64-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload214; R64-NEXT:    addi sp, sp, 32215; R64-NEXT:    ret216  %r = call nnan float @llvm.minnum.f32(float %x, float %y)217  ret float %r218}219 220define double @minnum_f64(double %x, double %y) nounwind {221; R32-LABEL: minnum_f64:222; R32:       # %bb.0:223; R32-NEXT:    addi sp, sp, -16224; R32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill225; R32-NEXT:    call fmin226; R32-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload227; R32-NEXT:    addi sp, sp, 16228; R32-NEXT:    ret229;230; R64-LABEL: minnum_f64:231; R64:       # %bb.0:232; R64-NEXT:    addi sp, sp, -16233; R64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill234; R64-NEXT:    call fmin235; R64-NEXT:    ld ra, 8(sp) # 8-byte Folded Reload236; R64-NEXT:    addi sp, sp, 16237; R64-NEXT:    ret238  %r = call double @llvm.minnum.f64(double %x, double %y)239  ret double %r240}241 242define double @minnum_f64_fast(double %x, double %y) nounwind {243; R32-LABEL: minnum_f64_fast:244; R32:       # %bb.0:245; R32-NEXT:    addi sp, sp, -32246; R32-NEXT:    sw ra, 28(sp) # 4-byte Folded Spill247; R32-NEXT:    sw s0, 24(sp) # 4-byte Folded Spill248; R32-NEXT:    sw s1, 20(sp) # 4-byte Folded Spill249; R32-NEXT:    sw s2, 16(sp) # 4-byte Folded Spill250; R32-NEXT:    sw s3, 12(sp) # 4-byte Folded Spill251; R32-NEXT:    mv s1, a3252; R32-NEXT:    mv s2, a2253; R32-NEXT:    mv s0, a1254; R32-NEXT:    mv s3, a0255; R32-NEXT:    call __ltdf2256; R32-NEXT:    mv a1, a0257; R32-NEXT:    mv a0, s3258; R32-NEXT:    bltz a1, .LBB7_2259; R32-NEXT:  # %bb.1:260; R32-NEXT:    mv s3, s2261; R32-NEXT:  .LBB7_2:262; R32-NEXT:    mv a1, s0263; R32-NEXT:    mv a2, s2264; R32-NEXT:    mv a3, s1265; R32-NEXT:    call __ltdf2266; R32-NEXT:    bltz a0, .LBB7_4267; R32-NEXT:  # %bb.3:268; R32-NEXT:    mv s0, s1269; R32-NEXT:  .LBB7_4:270; R32-NEXT:    mv a0, s3271; R32-NEXT:    mv a1, s0272; R32-NEXT:    lw ra, 28(sp) # 4-byte Folded Reload273; R32-NEXT:    lw s0, 24(sp) # 4-byte Folded Reload274; R32-NEXT:    lw s1, 20(sp) # 4-byte Folded Reload275; R32-NEXT:    lw s2, 16(sp) # 4-byte Folded Reload276; R32-NEXT:    lw s3, 12(sp) # 4-byte Folded Reload277; R32-NEXT:    addi sp, sp, 32278; R32-NEXT:    ret279;280; R64-LABEL: minnum_f64_fast:281; R64:       # %bb.0:282; R64-NEXT:    addi sp, sp, -32283; R64-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill284; R64-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill285; R64-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill286; R64-NEXT:    mv s1, a1287; R64-NEXT:    mv s0, a0288; R64-NEXT:    call __ltdf2289; R64-NEXT:    bltz a0, .LBB7_2290; R64-NEXT:  # %bb.1:291; R64-NEXT:    mv s0, s1292; R64-NEXT:  .LBB7_2:293; R64-NEXT:    mv a0, s0294; R64-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload295; R64-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload296; R64-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload297; R64-NEXT:    addi sp, sp, 32298; R64-NEXT:    ret299  %r = call fast double @llvm.minnum.f64(double %x, double %y)300  ret double %r301}302 303