brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.7 KiB · 9c52cd9 Raw
165 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc --mtriple=loongarch64 --mattr=-lsx < %s | FileCheck %s --check-prefix=NOLSX3; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s --check-prefix=LSX4 5;; ceilf6define float @ceil_f32(float %i) nounwind {7; NOLSX-LABEL: ceil_f32:8; NOLSX:       # %bb.0: # %entry9; NOLSX-NEXT:    pcaddu18i $t8, %call36(ceilf)10; NOLSX-NEXT:    jr $t811;12; LSX-LABEL: ceil_f32:13; LSX:       # %bb.0: # %entry14; LSX-NEXT:    # kill: def $f0 killed $f0 def $vr015; LSX-NEXT:    vreplvei.w $vr0, $vr0, 016; LSX-NEXT:    vfrintrp.s $vr0, $vr017; LSX-NEXT:    # kill: def $f0 killed $f0 killed $vr018; LSX-NEXT:    ret19entry:20  %0 = call float @llvm.ceil.f32(float %i)21  ret float %022}23 24;; ceil25define double @ceil_f64(double %i) nounwind {26; NOLSX-LABEL: ceil_f64:27; NOLSX:       # %bb.0: # %entry28; NOLSX-NEXT:    pcaddu18i $t8, %call36(ceil)29; NOLSX-NEXT:    jr $t830;31; LSX-LABEL: ceil_f64:32; LSX:       # %bb.0: # %entry33; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr034; LSX-NEXT:    vreplvei.d $vr0, $vr0, 035; LSX-NEXT:    vfrintrp.d $vr0, $vr036; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr037; LSX-NEXT:    ret38entry:39  %0 = call double @llvm.ceil.f64(double %i)40  ret double %041}42 43;; floorf44define float @floor_f32(float %i) nounwind {45; NOLSX-LABEL: floor_f32:46; NOLSX:       # %bb.0: # %entry47; NOLSX-NEXT:    pcaddu18i $t8, %call36(floorf)48; NOLSX-NEXT:    jr $t849;50; LSX-LABEL: floor_f32:51; LSX:       # %bb.0: # %entry52; LSX-NEXT:    # kill: def $f0 killed $f0 def $vr053; LSX-NEXT:    vreplvei.w $vr0, $vr0, 054; LSX-NEXT:    vfrintrm.s $vr0, $vr055; LSX-NEXT:    # kill: def $f0 killed $f0 killed $vr056; LSX-NEXT:    ret57entry:58  %0 = call float @llvm.floor.f32(float %i)59  ret float %060}61 62;; floor63define double @floor_f64(double %i) nounwind {64; NOLSX-LABEL: floor_f64:65; NOLSX:       # %bb.0: # %entry66; NOLSX-NEXT:    pcaddu18i $t8, %call36(floor)67; NOLSX-NEXT:    jr $t868;69; LSX-LABEL: floor_f64:70; LSX:       # %bb.0: # %entry71; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr072; LSX-NEXT:    vreplvei.d $vr0, $vr0, 073; LSX-NEXT:    vfrintrm.d $vr0, $vr074; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr075; LSX-NEXT:    ret76entry:77  %0 = call double @llvm.floor.f64(double %i)78  ret double %079}80 81;; truncf82define float @trunc_f32(float %i) nounwind {83; NOLSX-LABEL: trunc_f32:84; NOLSX:       # %bb.0: # %entry85; NOLSX-NEXT:    pcaddu18i $t8, %call36(truncf)86; NOLSX-NEXT:    jr $t887;88; LSX-LABEL: trunc_f32:89; LSX:       # %bb.0: # %entry90; LSX-NEXT:    # kill: def $f0 killed $f0 def $vr091; LSX-NEXT:    vreplvei.w $vr0, $vr0, 092; LSX-NEXT:    vfrintrz.s $vr0, $vr093; LSX-NEXT:    # kill: def $f0 killed $f0 killed $vr094; LSX-NEXT:    ret95entry:96  %0 = call float @llvm.trunc.f32(float %i)97  ret float %098}99 100;; trunc101define double @trunc_f64(double %i) nounwind {102; NOLSX-LABEL: trunc_f64:103; NOLSX:       # %bb.0: # %entry104; NOLSX-NEXT:    pcaddu18i $t8, %call36(trunc)105; NOLSX-NEXT:    jr $t8106;107; LSX-LABEL: trunc_f64:108; LSX:       # %bb.0: # %entry109; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr0110; LSX-NEXT:    vreplvei.d $vr0, $vr0, 0111; LSX-NEXT:    vfrintrz.d $vr0, $vr0112; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr0113; LSX-NEXT:    ret114entry:115  %0 = call double @llvm.trunc.f64(double %i)116  ret double %0117}118 119;; roundevenf120define float @roundeven_f32(float %i) nounwind {121; NOLSX-LABEL: roundeven_f32:122; NOLSX:       # %bb.0: # %entry123; NOLSX-NEXT:    pcaddu18i $t8, %call36(roundevenf)124; NOLSX-NEXT:    jr $t8125;126; LSX-LABEL: roundeven_f32:127; LSX:       # %bb.0: # %entry128; LSX-NEXT:    # kill: def $f0 killed $f0 def $vr0129; LSX-NEXT:    vreplvei.w $vr0, $vr0, 0130; LSX-NEXT:    vfrintrne.s $vr0, $vr0131; LSX-NEXT:    # kill: def $f0 killed $f0 killed $vr0132; LSX-NEXT:    ret133entry:134  %0 = call float @llvm.roundeven.f32(float %i)135  ret float %0136}137 138;; roundeven139define double @roundeven_f64(double %i) nounwind {140; NOLSX-LABEL: roundeven_f64:141; NOLSX:       # %bb.0: # %entry142; NOLSX-NEXT:    pcaddu18i $t8, %call36(roundeven)143; NOLSX-NEXT:    jr $t8144;145; LSX-LABEL: roundeven_f64:146; LSX:       # %bb.0: # %entry147; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 def $vr0148; LSX-NEXT:    vreplvei.d $vr0, $vr0, 0149; LSX-NEXT:    vfrintrne.d $vr0, $vr0150; LSX-NEXT:    # kill: def $f0_64 killed $f0_64 killed $vr0151; LSX-NEXT:    ret152entry:153  %0 = call double @llvm.roundeven.f64(double %i)154  ret double %0155}156 157declare float @llvm.ceil.f32(float)158declare double @llvm.ceil.f64(double)159declare float @llvm.floor.f32(float)160declare double @llvm.floor.f64(double)161declare float @llvm.trunc.f32(float)162declare double @llvm.trunc.f64(double)163declare float @llvm.roundeven.f32(float)164declare double @llvm.roundeven.f64(double)165