1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F 3; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D 4; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F 5; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D 6 7 8define float @f32_reciprocal(float %a) nounwind { 9; LA32F-LABEL: f32_reciprocal: 10; LA32F: # %bb.0: 11; LA32F-NEXT: frecip.s $fa0, $fa0 12; LA32F-NEXT: ret 13; 14; LA32D-LABEL: f32_reciprocal: 15; LA32D: # %bb.0: 16; LA32D-NEXT: frecip.s $fa0, $fa0 17; LA32D-NEXT: ret 18; 19; LA64F-LABEL: f32_reciprocal: 20; LA64F: # %bb.0: 21; LA64F-NEXT: frecip.s $fa0, $fa0 22; LA64F-NEXT: ret 23; 24; LA64D-LABEL: f32_reciprocal: 25; LA64D: # %bb.0: 26; LA64D-NEXT: frecip.s $fa0, $fa0 27; LA64D-NEXT: ret 28 %1 = fdiv float 1.0, %a 29 ret float %1 30} 31 32define double @f64_reciprocal(double %a) nounwind { 33; LA32F-LABEL: f64_reciprocal: 34; LA32F: # %bb.0: 35; LA32F-NEXT: addi.w $sp, $sp, -16 36; LA32F-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 37; LA32F-NEXT: move $a3, $a1 38; LA32F-NEXT: move $a2, $a0 39; LA32F-NEXT: lu12i.w $a1, 261888 40; LA32F-NEXT: move $a0, $zero 41; LA32F-NEXT: bl %plt(__divdf3) 42; LA32F-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 43; LA32F-NEXT: addi.w $sp, $sp, 16 44; LA32F-NEXT: ret 45; 46; LA32D-LABEL: f64_reciprocal: 47; LA32D: # %bb.0: 48; LA32D-NEXT: frecip.d $fa0, $fa0 49; LA32D-NEXT: ret 50; 51; LA64F-LABEL: f64_reciprocal: 52; LA64F: # %bb.0: 53; LA64F-NEXT: addi.d $sp, $sp, -16 54; LA64F-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 55; LA64F-NEXT: move $a1, $a0 56; LA64F-NEXT: lu52i.d $a0, $zero, 1023 57; LA64F-NEXT: bl %plt(__divdf3) 58; LA64F-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 59; LA64F-NEXT: addi.d $sp, $sp, 16 60; LA64F-NEXT: ret 61; 62; LA64D-LABEL: f64_reciprocal: 63; LA64D: # %bb.0: 64; LA64D-NEXT: frecip.d $fa0, $fa0 65; LA64D-NEXT: ret 66 %1 = fdiv double 1.0, %a 67 ret double %1 68} 69