brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · 967c366 Raw
133 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F3; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D4; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F5; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D6 7declare float @llvm.maxnum.f32(float, float)8declare double @llvm.maxnum.f64(double, double)9declare float @llvm.minnum.f32(float, float)10declare double @llvm.minnum.f64(double, double)11 12define float @maxnum_float(float %x, float %y) {13; LA32F-LABEL: maxnum_float:14; LA32F:       # %bb.0:15; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa116; LA32F-NEXT:    ret17;18; LA32D-LABEL: maxnum_float:19; LA32D:       # %bb.0:20; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa121; LA32D-NEXT:    ret22;23; LA64F-LABEL: maxnum_float:24; LA64F:       # %bb.0:25; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa126; LA64F-NEXT:    ret27;28; LA64D-LABEL: maxnum_float:29; LA64D:       # %bb.0:30; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa131; LA64D-NEXT:    ret32  %z = call float @llvm.maxnum.f32(float %x, float %y)33  ret float %z34}35 36define double @maxnum_double(double %x, double %y) {37; LA32F-LABEL: maxnum_double:38; LA32F:       # %bb.0:39; LA32F-NEXT:    addi.w $sp, $sp, -1640; LA32F-NEXT:    .cfi_def_cfa_offset 1641; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill42; LA32F-NEXT:    .cfi_offset 1, -443; LA32F-NEXT:    bl fmax44; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload45; LA32F-NEXT:    addi.w $sp, $sp, 1646; LA32F-NEXT:    ret47;48; LA32D-LABEL: maxnum_double:49; LA32D:       # %bb.0:50; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa151; LA32D-NEXT:    ret52;53; LA64F-LABEL: maxnum_double:54; LA64F:       # %bb.0:55; LA64F-NEXT:    addi.d $sp, $sp, -1656; LA64F-NEXT:    .cfi_def_cfa_offset 1657; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill58; LA64F-NEXT:    .cfi_offset 1, -859; LA64F-NEXT:    pcaddu18i $ra, %call36(fmax)60; LA64F-NEXT:    jirl $ra, $ra, 061; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload62; LA64F-NEXT:    addi.d $sp, $sp, 1663; LA64F-NEXT:    ret64;65; LA64D-LABEL: maxnum_double:66; LA64D:       # %bb.0:67; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa168; LA64D-NEXT:    ret69  %z = call double @llvm.maxnum.f64(double %x, double %y)70  ret double %z71}72 73define float @minnum_float(float %x, float %y) {74; LA32F-LABEL: minnum_float:75; LA32F:       # %bb.0:76; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa177; LA32F-NEXT:    ret78;79; LA32D-LABEL: minnum_float:80; LA32D:       # %bb.0:81; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa182; LA32D-NEXT:    ret83;84; LA64F-LABEL: minnum_float:85; LA64F:       # %bb.0:86; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa187; LA64F-NEXT:    ret88;89; LA64D-LABEL: minnum_float:90; LA64D:       # %bb.0:91; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa192; LA64D-NEXT:    ret93  %z = call float @llvm.minnum.f32(float %x, float %y)94  ret float %z95}96 97define double @minnum_double(double %x, double %y) {98; LA32F-LABEL: minnum_double:99; LA32F:       # %bb.0:100; LA32F-NEXT:    addi.w $sp, $sp, -16101; LA32F-NEXT:    .cfi_def_cfa_offset 16102; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill103; LA32F-NEXT:    .cfi_offset 1, -4104; LA32F-NEXT:    bl fmin105; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload106; LA32F-NEXT:    addi.w $sp, $sp, 16107; LA32F-NEXT:    ret108;109; LA32D-LABEL: minnum_double:110; LA32D:       # %bb.0:111; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1112; LA32D-NEXT:    ret113;114; LA64F-LABEL: minnum_double:115; LA64F:       # %bb.0:116; LA64F-NEXT:    addi.d $sp, $sp, -16117; LA64F-NEXT:    .cfi_def_cfa_offset 16118; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill119; LA64F-NEXT:    .cfi_offset 1, -8120; LA64F-NEXT:    pcaddu18i $ra, %call36(fmin)121; LA64F-NEXT:    jirl $ra, $ra, 0122; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload123; LA64F-NEXT:    addi.d $sp, $sp, 16124; LA64F-NEXT:    ret125;126; LA64D-LABEL: minnum_double:127; LA64D:       # %bb.0:128; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1129; LA64D-NEXT:    ret130  %z = call double @llvm.minnum.f64(double %x, double %y)131  ret double %z132}133