brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · 4951696 Raw
81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lsx,-frecipe < %s | FileCheck %s --check-prefixes=FAULT,FAULT-LA323; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lsx,+frecipe < %s | FileCheck %s4; RUN: llc --mtriple=loongarch64 --mattr=+lsx,-frecipe < %s | FileCheck %s --check-prefixes=FAULT,FAULT-LA645; RUN: llc --mtriple=loongarch64 --mattr=+lsx,+frecipe < %s | FileCheck %s6 7;; 1.0 / (fsqrt vec)8define void @one_div_sqrt_v4f32(ptr %res, ptr %a0) nounwind {9; FAULT-LABEL: one_div_sqrt_v4f32:10; FAULT:       # %bb.0: # %entry11; FAULT-NEXT:    vld $vr0, $a1, 012; FAULT-NEXT:    vfrsqrt.s $vr0, $vr013; FAULT-NEXT:    vst $vr0, $a0, 014; FAULT-NEXT:    ret15;16; CHECK-LABEL: one_div_sqrt_v4f32:17; CHECK:       # %bb.0: # %entry18; CHECK-NEXT:    vld $vr0, $a1, 019; CHECK-NEXT:    vfrsqrte.s $vr1, $vr020; CHECK-NEXT:    vfmul.s $vr1, $vr0, $vr121; CHECK-NEXT:    vfmul.s $vr0, $vr0, $vr122; CHECK-NEXT:    vldi $vr2, -140023; CHECK-NEXT:    vfmadd.s $vr0, $vr0, $vr1, $vr224; CHECK-NEXT:    vldi $vr2, -313725; CHECK-NEXT:    vfmul.s $vr1, $vr1, $vr226; CHECK-NEXT:    vfmul.s $vr0, $vr1, $vr027; CHECK-NEXT:    vst $vr0, $a0, 028; CHECK-NEXT:    ret29entry:30  %v0 = load <4 x float>, ptr %a0, align 1631  %sqrt = call fast <4 x float> @llvm.sqrt.v4f32 (<4 x float> %v0)32  %div = fdiv fast <4 x float> <float 1.0, float 1.0, float 1.0, float 1.0>, %sqrt33  store <4 x float> %div, ptr %res, align 1634  ret void35}36 37define void @one_div_sqrt_v2f64(ptr %res, ptr %a0) nounwind {38; FAULT-LA32-LABEL: one_div_sqrt_v2f64:39; FAULT-LA32:       # %bb.0: # %entry40; FAULT-LA32-NEXT:    vld $vr0, $a1, 041; FAULT-LA32-NEXT:    vfsqrt.d $vr0, $vr042; FAULT-LA32-NEXT:    vldi $vr1, -91243; FAULT-LA32-NEXT:    vfdiv.d $vr0, $vr1, $vr044; FAULT-LA32-NEXT:    vst $vr0, $a0, 045; FAULT-LA32-NEXT:    ret46;47; CHECK-LABEL: one_div_sqrt_v2f64:48; CHECK:       # %bb.0: # %entry49; CHECK-NEXT:    vld $vr0, $a1, 050; CHECK-NEXT:    vfrsqrte.d $vr1, $vr051; CHECK-NEXT:    vfmul.d $vr1, $vr0, $vr152; CHECK-NEXT:    vfmul.d $vr2, $vr0, $vr153; CHECK-NEXT:    vldi $vr3, -88854; CHECK-NEXT:    vfmadd.d $vr2, $vr2, $vr1, $vr355; CHECK-NEXT:    vldi $vr4, -80056; CHECK-NEXT:    vfmul.d $vr1, $vr1, $vr457; CHECK-NEXT:    vfmul.d $vr1, $vr1, $vr258; CHECK-NEXT:    vfmul.d $vr0, $vr0, $vr159; CHECK-NEXT:    vfmadd.d $vr0, $vr0, $vr1, $vr360; CHECK-NEXT:    vfmul.d $vr1, $vr1, $vr461; CHECK-NEXT:    vfmul.d $vr0, $vr1, $vr062; CHECK-NEXT:    vst $vr0, $a0, 063; CHECK-NEXT:    ret64;65; FAULT-LA64-LABEL: one_div_sqrt_v2f64:66; FAULT-LA64:       # %bb.0: # %entry67; FAULT-LA64-NEXT:    vld $vr0, $a1, 068; FAULT-LA64-NEXT:    vfrsqrt.d $vr0, $vr069; FAULT-LA64-NEXT:    vst $vr0, $a0, 070; FAULT-LA64-NEXT:    ret71entry:72  %v0 = load <2 x double>, ptr %a0, align 1673  %sqrt = call fast <2 x double> @llvm.sqrt.v2f64 (<2 x double> %v0)74  %div = fdiv fast <2 x double> <double 1.0, double 1.0>, %sqrt75  store <2 x double> %div, ptr %res, align 1676  ret void77}78 79declare <4 x float> @llvm.sqrt.v4f32(<4 x float>)80declare <2 x double> @llvm.sqrt.v2f64(<2 x double>)81