brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.8 KiB · 1024ee3 Raw
352 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lsx < %s | FileCheck %s3; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s4 5declare <4 x i32> @llvm.loongarch.lsx.vftintrne.w.s(<4 x float>)6 7define <4 x i32> @lsx_vftintrne_w_s(<4 x float> %va) nounwind {8; CHECK-LABEL: lsx_vftintrne_w_s:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    vftintrne.w.s $vr0, $vr011; CHECK-NEXT:    ret12entry:13  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrne.w.s(<4 x float> %va)14  ret <4 x i32> %res15}16 17declare <2 x i64> @llvm.loongarch.lsx.vftintrne.l.d(<2 x double>)18 19define <2 x i64> @lsx_vftintrne_l_d(<2 x double> %va) nounwind {20; CHECK-LABEL: lsx_vftintrne_l_d:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:    vftintrne.l.d $vr0, $vr023; CHECK-NEXT:    ret24entry:25  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrne.l.d(<2 x double> %va)26  ret <2 x i64> %res27}28 29declare <4 x i32> @llvm.loongarch.lsx.vftintrz.w.s(<4 x float>)30 31define <4 x i32> @lsx_vftintrz_w_s(<4 x float> %va) nounwind {32; CHECK-LABEL: lsx_vftintrz_w_s:33; CHECK:       # %bb.0: # %entry34; CHECK-NEXT:    vftintrz.w.s $vr0, $vr035; CHECK-NEXT:    ret36entry:37  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrz.w.s(<4 x float> %va)38  ret <4 x i32> %res39}40 41declare <2 x i64> @llvm.loongarch.lsx.vftintrz.l.d(<2 x double>)42 43define <2 x i64> @lsx_vftintrz_l_d(<2 x double> %va) nounwind {44; CHECK-LABEL: lsx_vftintrz_l_d:45; CHECK:       # %bb.0: # %entry46; CHECK-NEXT:    vftintrz.l.d $vr0, $vr047; CHECK-NEXT:    ret48entry:49  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrz.l.d(<2 x double> %va)50  ret <2 x i64> %res51}52 53declare <4 x i32> @llvm.loongarch.lsx.vftintrp.w.s(<4 x float>)54 55define <4 x i32> @lsx_vftintrp_w_s(<4 x float> %va) nounwind {56; CHECK-LABEL: lsx_vftintrp_w_s:57; CHECK:       # %bb.0: # %entry58; CHECK-NEXT:    vftintrp.w.s $vr0, $vr059; CHECK-NEXT:    ret60entry:61  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrp.w.s(<4 x float> %va)62  ret <4 x i32> %res63}64 65declare <2 x i64> @llvm.loongarch.lsx.vftintrp.l.d(<2 x double>)66 67define <2 x i64> @lsx_vftintrp_l_d(<2 x double> %va) nounwind {68; CHECK-LABEL: lsx_vftintrp_l_d:69; CHECK:       # %bb.0: # %entry70; CHECK-NEXT:    vftintrp.l.d $vr0, $vr071; CHECK-NEXT:    ret72entry:73  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrp.l.d(<2 x double> %va)74  ret <2 x i64> %res75}76 77declare <4 x i32> @llvm.loongarch.lsx.vftintrm.w.s(<4 x float>)78 79define <4 x i32> @lsx_vftintrm_w_s(<4 x float> %va) nounwind {80; CHECK-LABEL: lsx_vftintrm_w_s:81; CHECK:       # %bb.0: # %entry82; CHECK-NEXT:    vftintrm.w.s $vr0, $vr083; CHECK-NEXT:    ret84entry:85  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrm.w.s(<4 x float> %va)86  ret <4 x i32> %res87}88 89declare <2 x i64> @llvm.loongarch.lsx.vftintrm.l.d(<2 x double>)90 91define <2 x i64> @lsx_vftintrm_l_d(<2 x double> %va) nounwind {92; CHECK-LABEL: lsx_vftintrm_l_d:93; CHECK:       # %bb.0: # %entry94; CHECK-NEXT:    vftintrm.l.d $vr0, $vr095; CHECK-NEXT:    ret96entry:97  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrm.l.d(<2 x double> %va)98  ret <2 x i64> %res99}100 101declare <4 x i32> @llvm.loongarch.lsx.vftint.w.s(<4 x float>)102 103define <4 x i32> @lsx_vftint_w_s(<4 x float> %va) nounwind {104; CHECK-LABEL: lsx_vftint_w_s:105; CHECK:       # %bb.0: # %entry106; CHECK-NEXT:    vftint.w.s $vr0, $vr0107; CHECK-NEXT:    ret108entry:109  %res = call <4 x i32> @llvm.loongarch.lsx.vftint.w.s(<4 x float> %va)110  ret <4 x i32> %res111}112 113declare <2 x i64> @llvm.loongarch.lsx.vftint.l.d(<2 x double>)114 115define <2 x i64> @lsx_vftint_l_d(<2 x double> %va) nounwind {116; CHECK-LABEL: lsx_vftint_l_d:117; CHECK:       # %bb.0: # %entry118; CHECK-NEXT:    vftint.l.d $vr0, $vr0119; CHECK-NEXT:    ret120entry:121  %res = call <2 x i64> @llvm.loongarch.lsx.vftint.l.d(<2 x double> %va)122  ret <2 x i64> %res123}124 125declare <4 x i32> @llvm.loongarch.lsx.vftintrz.wu.s(<4 x float>)126 127define <4 x i32> @lsx_vftintrz_wu_s(<4 x float> %va) nounwind {128; CHECK-LABEL: lsx_vftintrz_wu_s:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    vftintrz.wu.s $vr0, $vr0131; CHECK-NEXT:    ret132entry:133  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrz.wu.s(<4 x float> %va)134  ret <4 x i32> %res135}136 137declare <2 x i64> @llvm.loongarch.lsx.vftintrz.lu.d(<2 x double>)138 139define <2 x i64> @lsx_vftintrz_lu_d(<2 x double> %va) nounwind {140; CHECK-LABEL: lsx_vftintrz_lu_d:141; CHECK:       # %bb.0: # %entry142; CHECK-NEXT:    vftintrz.lu.d $vr0, $vr0143; CHECK-NEXT:    ret144entry:145  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrz.lu.d(<2 x double> %va)146  ret <2 x i64> %res147}148 149declare <4 x i32> @llvm.loongarch.lsx.vftint.wu.s(<4 x float>)150 151define <4 x i32> @lsx_vftint_wu_s(<4 x float> %va) nounwind {152; CHECK-LABEL: lsx_vftint_wu_s:153; CHECK:       # %bb.0: # %entry154; CHECK-NEXT:    vftint.wu.s $vr0, $vr0155; CHECK-NEXT:    ret156entry:157  %res = call <4 x i32> @llvm.loongarch.lsx.vftint.wu.s(<4 x float> %va)158  ret <4 x i32> %res159}160 161declare <2 x i64> @llvm.loongarch.lsx.vftint.lu.d(<2 x double>)162 163define <2 x i64> @lsx_vftint_lu_d(<2 x double> %va) nounwind {164; CHECK-LABEL: lsx_vftint_lu_d:165; CHECK:       # %bb.0: # %entry166; CHECK-NEXT:    vftint.lu.d $vr0, $vr0167; CHECK-NEXT:    ret168entry:169  %res = call <2 x i64> @llvm.loongarch.lsx.vftint.lu.d(<2 x double> %va)170  ret <2 x i64> %res171}172 173declare <4 x i32> @llvm.loongarch.lsx.vftintrne.w.d(<2 x double>, <2 x double>)174 175define <4 x i32> @lsx_vftintrne_w_d(<2 x double> %va, <2 x double> %vb) nounwind {176; CHECK-LABEL: lsx_vftintrne_w_d:177; CHECK:       # %bb.0: # %entry178; CHECK-NEXT:    vftintrne.w.d $vr0, $vr0, $vr1179; CHECK-NEXT:    ret180entry:181  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrne.w.d(<2 x double> %va, <2 x double> %vb)182  ret <4 x i32> %res183}184 185declare <4 x i32> @llvm.loongarch.lsx.vftintrz.w.d(<2 x double>, <2 x double>)186 187define <4 x i32> @lsx_vftintrz_w_d(<2 x double> %va, <2 x double> %vb) nounwind {188; CHECK-LABEL: lsx_vftintrz_w_d:189; CHECK:       # %bb.0: # %entry190; CHECK-NEXT:    vftintrz.w.d $vr0, $vr0, $vr1191; CHECK-NEXT:    ret192entry:193  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrz.w.d(<2 x double> %va, <2 x double> %vb)194  ret <4 x i32> %res195}196 197declare <4 x i32> @llvm.loongarch.lsx.vftintrp.w.d(<2 x double>, <2 x double>)198 199define <4 x i32> @lsx_vftintrp_w_d(<2 x double> %va, <2 x double> %vb) nounwind {200; CHECK-LABEL: lsx_vftintrp_w_d:201; CHECK:       # %bb.0: # %entry202; CHECK-NEXT:    vftintrp.w.d $vr0, $vr0, $vr1203; CHECK-NEXT:    ret204entry:205  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrp.w.d(<2 x double> %va, <2 x double> %vb)206  ret <4 x i32> %res207}208 209declare <4 x i32> @llvm.loongarch.lsx.vftintrm.w.d(<2 x double>, <2 x double>)210 211define <4 x i32> @lsx_vftintrm_w_d(<2 x double> %va, <2 x double> %vb) nounwind {212; CHECK-LABEL: lsx_vftintrm_w_d:213; CHECK:       # %bb.0: # %entry214; CHECK-NEXT:    vftintrm.w.d $vr0, $vr0, $vr1215; CHECK-NEXT:    ret216entry:217  %res = call <4 x i32> @llvm.loongarch.lsx.vftintrm.w.d(<2 x double> %va, <2 x double> %vb)218  ret <4 x i32> %res219}220 221declare <4 x i32> @llvm.loongarch.lsx.vftint.w.d(<2 x double>, <2 x double>)222 223define <4 x i32> @lsx_vftint_w_d(<2 x double> %va, <2 x double> %vb) nounwind {224; CHECK-LABEL: lsx_vftint_w_d:225; CHECK:       # %bb.0: # %entry226; CHECK-NEXT:    vftint.w.d $vr0, $vr0, $vr1227; CHECK-NEXT:    ret228entry:229  %res = call <4 x i32> @llvm.loongarch.lsx.vftint.w.d(<2 x double> %va, <2 x double> %vb)230  ret <4 x i32> %res231}232 233declare <2 x i64> @llvm.loongarch.lsx.vftintrnel.l.s(<4 x float>)234 235define <2 x i64> @lsx_vftintrnel_l_s(<4 x float> %va) nounwind {236; CHECK-LABEL: lsx_vftintrnel_l_s:237; CHECK:       # %bb.0: # %entry238; CHECK-NEXT:    vftintrnel.l.s $vr0, $vr0239; CHECK-NEXT:    ret240entry:241  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrnel.l.s(<4 x float> %va)242  ret <2 x i64> %res243}244 245declare <2 x i64> @llvm.loongarch.lsx.vftintrneh.l.s(<4 x float>)246 247define <2 x i64> @lsx_vftintrneh_l_s(<4 x float> %va) nounwind {248; CHECK-LABEL: lsx_vftintrneh_l_s:249; CHECK:       # %bb.0: # %entry250; CHECK-NEXT:    vftintrneh.l.s $vr0, $vr0251; CHECK-NEXT:    ret252entry:253  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrneh.l.s(<4 x float> %va)254  ret <2 x i64> %res255}256 257declare <2 x i64> @llvm.loongarch.lsx.vftintrzl.l.s(<4 x float>)258 259define <2 x i64> @lsx_vftintrzl_l_s(<4 x float> %va) nounwind {260; CHECK-LABEL: lsx_vftintrzl_l_s:261; CHECK:       # %bb.0: # %entry262; CHECK-NEXT:    vftintrzl.l.s $vr0, $vr0263; CHECK-NEXT:    ret264entry:265  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrzl.l.s(<4 x float> %va)266  ret <2 x i64> %res267}268 269declare <2 x i64> @llvm.loongarch.lsx.vftintrzh.l.s(<4 x float>)270 271define <2 x i64> @lsx_vftintrzh_l_s(<4 x float> %va) nounwind {272; CHECK-LABEL: lsx_vftintrzh_l_s:273; CHECK:       # %bb.0: # %entry274; CHECK-NEXT:    vftintrzh.l.s $vr0, $vr0275; CHECK-NEXT:    ret276entry:277  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrzh.l.s(<4 x float> %va)278  ret <2 x i64> %res279}280 281declare <2 x i64> @llvm.loongarch.lsx.vftintrpl.l.s(<4 x float>)282 283define <2 x i64> @lsx_vftintrpl_l_s(<4 x float> %va) nounwind {284; CHECK-LABEL: lsx_vftintrpl_l_s:285; CHECK:       # %bb.0: # %entry286; CHECK-NEXT:    vftintrpl.l.s $vr0, $vr0287; CHECK-NEXT:    ret288entry:289  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrpl.l.s(<4 x float> %va)290  ret <2 x i64> %res291}292 293declare <2 x i64> @llvm.loongarch.lsx.vftintrph.l.s(<4 x float>)294 295define <2 x i64> @lsx_vftintrph_l_s(<4 x float> %va) nounwind {296; CHECK-LABEL: lsx_vftintrph_l_s:297; CHECK:       # %bb.0: # %entry298; CHECK-NEXT:    vftintrph.l.s $vr0, $vr0299; CHECK-NEXT:    ret300entry:301  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrph.l.s(<4 x float> %va)302  ret <2 x i64> %res303}304 305declare <2 x i64> @llvm.loongarch.lsx.vftintrml.l.s(<4 x float>)306 307define <2 x i64> @lsx_vftintrml_l_s(<4 x float> %va) nounwind {308; CHECK-LABEL: lsx_vftintrml_l_s:309; CHECK:       # %bb.0: # %entry310; CHECK-NEXT:    vftintrml.l.s $vr0, $vr0311; CHECK-NEXT:    ret312entry:313  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrml.l.s(<4 x float> %va)314  ret <2 x i64> %res315}316 317declare <2 x i64> @llvm.loongarch.lsx.vftintrmh.l.s(<4 x float>)318 319define <2 x i64> @lsx_vftintrmh_l_s(<4 x float> %va) nounwind {320; CHECK-LABEL: lsx_vftintrmh_l_s:321; CHECK:       # %bb.0: # %entry322; CHECK-NEXT:    vftintrmh.l.s $vr0, $vr0323; CHECK-NEXT:    ret324entry:325  %res = call <2 x i64> @llvm.loongarch.lsx.vftintrmh.l.s(<4 x float> %va)326  ret <2 x i64> %res327}328 329declare <2 x i64> @llvm.loongarch.lsx.vftintl.l.s(<4 x float>)330 331define <2 x i64> @lsx_vftintl_l_s(<4 x float> %va) nounwind {332; CHECK-LABEL: lsx_vftintl_l_s:333; CHECK:       # %bb.0: # %entry334; CHECK-NEXT:    vftintl.l.s $vr0, $vr0335; CHECK-NEXT:    ret336entry:337  %res = call <2 x i64> @llvm.loongarch.lsx.vftintl.l.s(<4 x float> %va)338  ret <2 x i64> %res339}340 341declare <2 x i64> @llvm.loongarch.lsx.vftinth.l.s(<4 x float>)342 343define <2 x i64> @lsx_vftinth_l_s(<4 x float> %va) nounwind {344; CHECK-LABEL: lsx_vftinth_l_s:345; CHECK:       # %bb.0: # %entry346; CHECK-NEXT:    vftinth.l.s $vr0, $vr0347; CHECK-NEXT:    ret348entry:349  %res = call <2 x i64> @llvm.loongarch.lsx.vftinth.l.s(<4 x float> %va)350  ret <2 x i64> %res351}352