brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.8 KiB · e0cb4d3 Raw
134 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.sqrt.f32(float)8declare double @llvm.sqrt.f64(double)9 10define float @fsqrt_f32(float %a) nounwind {11; LA32F-LABEL: fsqrt_f32:12; LA32F:       # %bb.0:13; LA32F-NEXT:    fsqrt.s $fa0, $fa014; LA32F-NEXT:    ret15;16; LA32D-LABEL: fsqrt_f32:17; LA32D:       # %bb.0:18; LA32D-NEXT:    fsqrt.s $fa0, $fa019; LA32D-NEXT:    ret20;21; LA64F-LABEL: fsqrt_f32:22; LA64F:       # %bb.0:23; LA64F-NEXT:    fsqrt.s $fa0, $fa024; LA64F-NEXT:    ret25;26; LA64D-LABEL: fsqrt_f32:27; LA64D:       # %bb.0:28; LA64D-NEXT:    fsqrt.s $fa0, $fa029; LA64D-NEXT:    ret30  %1 = call float @llvm.sqrt.f32(float %a)31  ret float %132}33 34define double @fsqrt_f64(double %a) nounwind {35; LA32F-LABEL: fsqrt_f64:36; LA32F:       # %bb.0:37; LA32F-NEXT:    addi.w $sp, $sp, -1638; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill39; LA32F-NEXT:    bl sqrt40; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload41; LA32F-NEXT:    addi.w $sp, $sp, 1642; LA32F-NEXT:    ret43;44; LA32D-LABEL: fsqrt_f64:45; LA32D:       # %bb.0:46; LA32D-NEXT:    fsqrt.d $fa0, $fa047; LA32D-NEXT:    ret48;49; LA64F-LABEL: fsqrt_f64:50; LA64F:       # %bb.0:51; LA64F-NEXT:    addi.d $sp, $sp, -1652; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill53; LA64F-NEXT:    pcaddu18i $ra, %call36(sqrt)54; LA64F-NEXT:    jirl $ra, $ra, 055; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload56; LA64F-NEXT:    addi.d $sp, $sp, 1657; LA64F-NEXT:    ret58;59; LA64D-LABEL: fsqrt_f64:60; LA64D:       # %bb.0:61; LA64D-NEXT:    fsqrt.d $fa0, $fa062; LA64D-NEXT:    ret63  %1 = call double @llvm.sqrt.f64(double %a)64  ret double %165}66 67define float @frsqrt_f32(float %a) nounwind {68; LA32F-LABEL: frsqrt_f32:69; LA32F:       # %bb.0:70; LA32F-NEXT:    frsqrt.s $fa0, $fa071; LA32F-NEXT:    ret72;73; LA32D-LABEL: frsqrt_f32:74; LA32D:       # %bb.0:75; LA32D-NEXT:    frsqrt.s $fa0, $fa076; LA32D-NEXT:    ret77;78; LA64F-LABEL: frsqrt_f32:79; LA64F:       # %bb.0:80; LA64F-NEXT:    frsqrt.s $fa0, $fa081; LA64F-NEXT:    ret82;83; LA64D-LABEL: frsqrt_f32:84; LA64D:       # %bb.0:85; LA64D-NEXT:    frsqrt.s $fa0, $fa086; LA64D-NEXT:    ret87  %1 = call float @llvm.sqrt.f32(float %a)88  %2 = fdiv float 1.0, %189  ret float %290}91 92define double @frsqrt_f64(double %a) nounwind {93; LA32F-LABEL: frsqrt_f64:94; LA32F:       # %bb.0:95; LA32F-NEXT:    addi.w $sp, $sp, -1696; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill97; LA32F-NEXT:    bl sqrt98; LA32F-NEXT:    move $a2, $a099; LA32F-NEXT:    move $a3, $a1100; LA32F-NEXT:    lu12i.w $a1, 261888101; LA32F-NEXT:    move $a0, $zero102; LA32F-NEXT:    bl __divdf3103; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload104; LA32F-NEXT:    addi.w $sp, $sp, 16105; LA32F-NEXT:    ret106;107; LA32D-LABEL: frsqrt_f64:108; LA32D:       # %bb.0:109; LA32D-NEXT:    frsqrt.d $fa0, $fa0110; LA32D-NEXT:    ret111;112; LA64F-LABEL: frsqrt_f64:113; LA64F:       # %bb.0:114; LA64F-NEXT:    addi.d $sp, $sp, -16115; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill116; LA64F-NEXT:    pcaddu18i $ra, %call36(sqrt)117; LA64F-NEXT:    jirl $ra, $ra, 0118; LA64F-NEXT:    move $a1, $a0119; LA64F-NEXT:    lu52i.d $a0, $zero, 1023120; LA64F-NEXT:    pcaddu18i $ra, %call36(__divdf3)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: frsqrt_f64:127; LA64D:       # %bb.0:128; LA64D-NEXT:    frsqrt.d $fa0, $fa0129; LA64D-NEXT:    ret130  %1 = call double @llvm.sqrt.f64(double %a)131  %2 = fdiv double 1.0, %1132  ret double %2133}134