532 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lasx < %s | FileCheck %s3; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s4 5declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.caf.s(<8 x float>, <8 x float>)6 7define <8 x i32> @lasx_xvfcmp_caf_s(<8 x float> %va, <8 x float> %vb) nounwind {8; CHECK-LABEL: lasx_xvfcmp_caf_s:9; CHECK: # %bb.0: # %entry10; CHECK-NEXT: xvfcmp.caf.s $xr0, $xr0, $xr111; CHECK-NEXT: ret12entry:13 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.caf.s(<8 x float> %va, <8 x float> %vb)14 ret <8 x i32> %res15}16 17declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.caf.d(<4 x double>, <4 x double>)18 19define <4 x i64> @lasx_xvfcmp_caf_d(<4 x double> %va, <4 x double> %vb) nounwind {20; CHECK-LABEL: lasx_xvfcmp_caf_d:21; CHECK: # %bb.0: # %entry22; CHECK-NEXT: xvfcmp.caf.d $xr0, $xr0, $xr123; CHECK-NEXT: ret24entry:25 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.caf.d(<4 x double> %va, <4 x double> %vb)26 ret <4 x i64> %res27}28 29declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cun.s(<8 x float>, <8 x float>)30 31define <8 x i32> @lasx_xvfcmp_cun_s(<8 x float> %va, <8 x float> %vb) nounwind {32; CHECK-LABEL: lasx_xvfcmp_cun_s:33; CHECK: # %bb.0: # %entry34; CHECK-NEXT: xvfcmp.cun.s $xr0, $xr0, $xr135; CHECK-NEXT: ret36entry:37 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cun.s(<8 x float> %va, <8 x float> %vb)38 ret <8 x i32> %res39}40 41declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cun.d(<4 x double>, <4 x double>)42 43define <4 x i64> @lasx_xvfcmp_cun_d(<4 x double> %va, <4 x double> %vb) nounwind {44; CHECK-LABEL: lasx_xvfcmp_cun_d:45; CHECK: # %bb.0: # %entry46; CHECK-NEXT: xvfcmp.cun.d $xr0, $xr0, $xr147; CHECK-NEXT: ret48entry:49 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cun.d(<4 x double> %va, <4 x double> %vb)50 ret <4 x i64> %res51}52 53declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.ceq.s(<8 x float>, <8 x float>)54 55define <8 x i32> @lasx_xvfcmp_ceq_s(<8 x float> %va, <8 x float> %vb) nounwind {56; CHECK-LABEL: lasx_xvfcmp_ceq_s:57; CHECK: # %bb.0: # %entry58; CHECK-NEXT: xvfcmp.ceq.s $xr0, $xr0, $xr159; CHECK-NEXT: ret60entry:61 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.ceq.s(<8 x float> %va, <8 x float> %vb)62 ret <8 x i32> %res63}64 65declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.ceq.d(<4 x double>, <4 x double>)66 67define <4 x i64> @lasx_xvfcmp_ceq_d(<4 x double> %va, <4 x double> %vb) nounwind {68; CHECK-LABEL: lasx_xvfcmp_ceq_d:69; CHECK: # %bb.0: # %entry70; CHECK-NEXT: xvfcmp.ceq.d $xr0, $xr0, $xr171; CHECK-NEXT: ret72entry:73 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.ceq.d(<4 x double> %va, <4 x double> %vb)74 ret <4 x i64> %res75}76 77declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cueq.s(<8 x float>, <8 x float>)78 79define <8 x i32> @lasx_xvfcmp_cueq_s(<8 x float> %va, <8 x float> %vb) nounwind {80; CHECK-LABEL: lasx_xvfcmp_cueq_s:81; CHECK: # %bb.0: # %entry82; CHECK-NEXT: xvfcmp.cueq.s $xr0, $xr0, $xr183; CHECK-NEXT: ret84entry:85 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cueq.s(<8 x float> %va, <8 x float> %vb)86 ret <8 x i32> %res87}88 89declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cueq.d(<4 x double>, <4 x double>)90 91define <4 x i64> @lasx_xvfcmp_cueq_d(<4 x double> %va, <4 x double> %vb) nounwind {92; CHECK-LABEL: lasx_xvfcmp_cueq_d:93; CHECK: # %bb.0: # %entry94; CHECK-NEXT: xvfcmp.cueq.d $xr0, $xr0, $xr195; CHECK-NEXT: ret96entry:97 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cueq.d(<4 x double> %va, <4 x double> %vb)98 ret <4 x i64> %res99}100 101declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.clt.s(<8 x float>, <8 x float>)102 103define <8 x i32> @lasx_xvfcmp_clt_s(<8 x float> %va, <8 x float> %vb) nounwind {104; CHECK-LABEL: lasx_xvfcmp_clt_s:105; CHECK: # %bb.0: # %entry106; CHECK-NEXT: xvfcmp.clt.s $xr0, $xr0, $xr1107; CHECK-NEXT: ret108entry:109 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.clt.s(<8 x float> %va, <8 x float> %vb)110 ret <8 x i32> %res111}112 113declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.clt.d(<4 x double>, <4 x double>)114 115define <4 x i64> @lasx_xvfcmp_clt_d(<4 x double> %va, <4 x double> %vb) nounwind {116; CHECK-LABEL: lasx_xvfcmp_clt_d:117; CHECK: # %bb.0: # %entry118; CHECK-NEXT: xvfcmp.clt.d $xr0, $xr0, $xr1119; CHECK-NEXT: ret120entry:121 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.clt.d(<4 x double> %va, <4 x double> %vb)122 ret <4 x i64> %res123}124 125declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cult.s(<8 x float>, <8 x float>)126 127define <8 x i32> @lasx_xvfcmp_cult_s(<8 x float> %va, <8 x float> %vb) nounwind {128; CHECK-LABEL: lasx_xvfcmp_cult_s:129; CHECK: # %bb.0: # %entry130; CHECK-NEXT: xvfcmp.cult.s $xr0, $xr0, $xr1131; CHECK-NEXT: ret132entry:133 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cult.s(<8 x float> %va, <8 x float> %vb)134 ret <8 x i32> %res135}136 137declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cult.d(<4 x double>, <4 x double>)138 139define <4 x i64> @lasx_xvfcmp_cult_d(<4 x double> %va, <4 x double> %vb) nounwind {140; CHECK-LABEL: lasx_xvfcmp_cult_d:141; CHECK: # %bb.0: # %entry142; CHECK-NEXT: xvfcmp.cult.d $xr0, $xr0, $xr1143; CHECK-NEXT: ret144entry:145 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cult.d(<4 x double> %va, <4 x double> %vb)146 ret <4 x i64> %res147}148 149declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cle.s(<8 x float>, <8 x float>)150 151define <8 x i32> @lasx_xvfcmp_cle_s(<8 x float> %va, <8 x float> %vb) nounwind {152; CHECK-LABEL: lasx_xvfcmp_cle_s:153; CHECK: # %bb.0: # %entry154; CHECK-NEXT: xvfcmp.cle.s $xr0, $xr0, $xr1155; CHECK-NEXT: ret156entry:157 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cle.s(<8 x float> %va, <8 x float> %vb)158 ret <8 x i32> %res159}160 161declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cle.d(<4 x double>, <4 x double>)162 163define <4 x i64> @lasx_xvfcmp_cle_d(<4 x double> %va, <4 x double> %vb) nounwind {164; CHECK-LABEL: lasx_xvfcmp_cle_d:165; CHECK: # %bb.0: # %entry166; CHECK-NEXT: xvfcmp.cle.d $xr0, $xr0, $xr1167; CHECK-NEXT: ret168entry:169 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cle.d(<4 x double> %va, <4 x double> %vb)170 ret <4 x i64> %res171}172 173declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cule.s(<8 x float>, <8 x float>)174 175define <8 x i32> @lasx_xvfcmp_cule_s(<8 x float> %va, <8 x float> %vb) nounwind {176; CHECK-LABEL: lasx_xvfcmp_cule_s:177; CHECK: # %bb.0: # %entry178; CHECK-NEXT: xvfcmp.cule.s $xr0, $xr0, $xr1179; CHECK-NEXT: ret180entry:181 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cule.s(<8 x float> %va, <8 x float> %vb)182 ret <8 x i32> %res183}184 185declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cule.d(<4 x double>, <4 x double>)186 187define <4 x i64> @lasx_xvfcmp_cule_d(<4 x double> %va, <4 x double> %vb) nounwind {188; CHECK-LABEL: lasx_xvfcmp_cule_d:189; CHECK: # %bb.0: # %entry190; CHECK-NEXT: xvfcmp.cule.d $xr0, $xr0, $xr1191; CHECK-NEXT: ret192entry:193 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cule.d(<4 x double> %va, <4 x double> %vb)194 ret <4 x i64> %res195}196 197declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cne.s(<8 x float>, <8 x float>)198 199define <8 x i32> @lasx_xvfcmp_cne_s(<8 x float> %va, <8 x float> %vb) nounwind {200; CHECK-LABEL: lasx_xvfcmp_cne_s:201; CHECK: # %bb.0: # %entry202; CHECK-NEXT: xvfcmp.cne.s $xr0, $xr0, $xr1203; CHECK-NEXT: ret204entry:205 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cne.s(<8 x float> %va, <8 x float> %vb)206 ret <8 x i32> %res207}208 209declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cne.d(<4 x double>, <4 x double>)210 211define <4 x i64> @lasx_xvfcmp_cne_d(<4 x double> %va, <4 x double> %vb) nounwind {212; CHECK-LABEL: lasx_xvfcmp_cne_d:213; CHECK: # %bb.0: # %entry214; CHECK-NEXT: xvfcmp.cne.d $xr0, $xr0, $xr1215; CHECK-NEXT: ret216entry:217 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cne.d(<4 x double> %va, <4 x double> %vb)218 ret <4 x i64> %res219}220 221declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cor.s(<8 x float>, <8 x float>)222 223define <8 x i32> @lasx_xvfcmp_cor_s(<8 x float> %va, <8 x float> %vb) nounwind {224; CHECK-LABEL: lasx_xvfcmp_cor_s:225; CHECK: # %bb.0: # %entry226; CHECK-NEXT: xvfcmp.cor.s $xr0, $xr0, $xr1227; CHECK-NEXT: ret228entry:229 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cor.s(<8 x float> %va, <8 x float> %vb)230 ret <8 x i32> %res231}232 233declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cor.d(<4 x double>, <4 x double>)234 235define <4 x i64> @lasx_xvfcmp_cor_d(<4 x double> %va, <4 x double> %vb) nounwind {236; CHECK-LABEL: lasx_xvfcmp_cor_d:237; CHECK: # %bb.0: # %entry238; CHECK-NEXT: xvfcmp.cor.d $xr0, $xr0, $xr1239; CHECK-NEXT: ret240entry:241 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cor.d(<4 x double> %va, <4 x double> %vb)242 ret <4 x i64> %res243}244 245declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.cune.s(<8 x float>, <8 x float>)246 247define <8 x i32> @lasx_xvfcmp_cune_s(<8 x float> %va, <8 x float> %vb) nounwind {248; CHECK-LABEL: lasx_xvfcmp_cune_s:249; CHECK: # %bb.0: # %entry250; CHECK-NEXT: xvfcmp.cune.s $xr0, $xr0, $xr1251; CHECK-NEXT: ret252entry:253 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.cune.s(<8 x float> %va, <8 x float> %vb)254 ret <8 x i32> %res255}256 257declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.cune.d(<4 x double>, <4 x double>)258 259define <4 x i64> @lasx_xvfcmp_cune_d(<4 x double> %va, <4 x double> %vb) nounwind {260; CHECK-LABEL: lasx_xvfcmp_cune_d:261; CHECK: # %bb.0: # %entry262; CHECK-NEXT: xvfcmp.cune.d $xr0, $xr0, $xr1263; CHECK-NEXT: ret264entry:265 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.cune.d(<4 x double> %va, <4 x double> %vb)266 ret <4 x i64> %res267}268 269declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.saf.s(<8 x float>, <8 x float>)270 271define <8 x i32> @lasx_xvfcmp_saf_s(<8 x float> %va, <8 x float> %vb) nounwind {272; CHECK-LABEL: lasx_xvfcmp_saf_s:273; CHECK: # %bb.0: # %entry274; CHECK-NEXT: xvfcmp.saf.s $xr0, $xr0, $xr1275; CHECK-NEXT: ret276entry:277 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.saf.s(<8 x float> %va, <8 x float> %vb)278 ret <8 x i32> %res279}280 281declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.saf.d(<4 x double>, <4 x double>)282 283define <4 x i64> @lasx_xvfcmp_saf_d(<4 x double> %va, <4 x double> %vb) nounwind {284; CHECK-LABEL: lasx_xvfcmp_saf_d:285; CHECK: # %bb.0: # %entry286; CHECK-NEXT: xvfcmp.saf.d $xr0, $xr0, $xr1287; CHECK-NEXT: ret288entry:289 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.saf.d(<4 x double> %va, <4 x double> %vb)290 ret <4 x i64> %res291}292 293declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sun.s(<8 x float>, <8 x float>)294 295define <8 x i32> @lasx_xvfcmp_sun_s(<8 x float> %va, <8 x float> %vb) nounwind {296; CHECK-LABEL: lasx_xvfcmp_sun_s:297; CHECK: # %bb.0: # %entry298; CHECK-NEXT: xvfcmp.sun.s $xr0, $xr0, $xr1299; CHECK-NEXT: ret300entry:301 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sun.s(<8 x float> %va, <8 x float> %vb)302 ret <8 x i32> %res303}304 305declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sun.d(<4 x double>, <4 x double>)306 307define <4 x i64> @lasx_xvfcmp_sun_d(<4 x double> %va, <4 x double> %vb) nounwind {308; CHECK-LABEL: lasx_xvfcmp_sun_d:309; CHECK: # %bb.0: # %entry310; CHECK-NEXT: xvfcmp.sun.d $xr0, $xr0, $xr1311; CHECK-NEXT: ret312entry:313 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sun.d(<4 x double> %va, <4 x double> %vb)314 ret <4 x i64> %res315}316 317declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.seq.s(<8 x float>, <8 x float>)318 319define <8 x i32> @lasx_xvfcmp_seq_s(<8 x float> %va, <8 x float> %vb) nounwind {320; CHECK-LABEL: lasx_xvfcmp_seq_s:321; CHECK: # %bb.0: # %entry322; CHECK-NEXT: xvfcmp.seq.s $xr0, $xr0, $xr1323; CHECK-NEXT: ret324entry:325 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.seq.s(<8 x float> %va, <8 x float> %vb)326 ret <8 x i32> %res327}328 329declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.seq.d(<4 x double>, <4 x double>)330 331define <4 x i64> @lasx_xvfcmp_seq_d(<4 x double> %va, <4 x double> %vb) nounwind {332; CHECK-LABEL: lasx_xvfcmp_seq_d:333; CHECK: # %bb.0: # %entry334; CHECK-NEXT: xvfcmp.seq.d $xr0, $xr0, $xr1335; CHECK-NEXT: ret336entry:337 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.seq.d(<4 x double> %va, <4 x double> %vb)338 ret <4 x i64> %res339}340 341declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sueq.s(<8 x float>, <8 x float>)342 343define <8 x i32> @lasx_xvfcmp_sueq_s(<8 x float> %va, <8 x float> %vb) nounwind {344; CHECK-LABEL: lasx_xvfcmp_sueq_s:345; CHECK: # %bb.0: # %entry346; CHECK-NEXT: xvfcmp.sueq.s $xr0, $xr0, $xr1347; CHECK-NEXT: ret348entry:349 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sueq.s(<8 x float> %va, <8 x float> %vb)350 ret <8 x i32> %res351}352 353declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sueq.d(<4 x double>, <4 x double>)354 355define <4 x i64> @lasx_xvfcmp_sueq_d(<4 x double> %va, <4 x double> %vb) nounwind {356; CHECK-LABEL: lasx_xvfcmp_sueq_d:357; CHECK: # %bb.0: # %entry358; CHECK-NEXT: xvfcmp.sueq.d $xr0, $xr0, $xr1359; CHECK-NEXT: ret360entry:361 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sueq.d(<4 x double> %va, <4 x double> %vb)362 ret <4 x i64> %res363}364 365declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.slt.s(<8 x float>, <8 x float>)366 367define <8 x i32> @lasx_xvfcmp_slt_s(<8 x float> %va, <8 x float> %vb) nounwind {368; CHECK-LABEL: lasx_xvfcmp_slt_s:369; CHECK: # %bb.0: # %entry370; CHECK-NEXT: xvfcmp.slt.s $xr0, $xr0, $xr1371; CHECK-NEXT: ret372entry:373 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.slt.s(<8 x float> %va, <8 x float> %vb)374 ret <8 x i32> %res375}376 377declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.slt.d(<4 x double>, <4 x double>)378 379define <4 x i64> @lasx_xvfcmp_slt_d(<4 x double> %va, <4 x double> %vb) nounwind {380; CHECK-LABEL: lasx_xvfcmp_slt_d:381; CHECK: # %bb.0: # %entry382; CHECK-NEXT: xvfcmp.slt.d $xr0, $xr0, $xr1383; CHECK-NEXT: ret384entry:385 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.slt.d(<4 x double> %va, <4 x double> %vb)386 ret <4 x i64> %res387}388 389declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sult.s(<8 x float>, <8 x float>)390 391define <8 x i32> @lasx_xvfcmp_sult_s(<8 x float> %va, <8 x float> %vb) nounwind {392; CHECK-LABEL: lasx_xvfcmp_sult_s:393; CHECK: # %bb.0: # %entry394; CHECK-NEXT: xvfcmp.sult.s $xr0, $xr0, $xr1395; CHECK-NEXT: ret396entry:397 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sult.s(<8 x float> %va, <8 x float> %vb)398 ret <8 x i32> %res399}400 401declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sult.d(<4 x double>, <4 x double>)402 403define <4 x i64> @lasx_xvfcmp_sult_d(<4 x double> %va, <4 x double> %vb) nounwind {404; CHECK-LABEL: lasx_xvfcmp_sult_d:405; CHECK: # %bb.0: # %entry406; CHECK-NEXT: xvfcmp.sult.d $xr0, $xr0, $xr1407; CHECK-NEXT: ret408entry:409 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sult.d(<4 x double> %va, <4 x double> %vb)410 ret <4 x i64> %res411}412 413declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sle.s(<8 x float>, <8 x float>)414 415define <8 x i32> @lasx_xvfcmp_sle_s(<8 x float> %va, <8 x float> %vb) nounwind {416; CHECK-LABEL: lasx_xvfcmp_sle_s:417; CHECK: # %bb.0: # %entry418; CHECK-NEXT: xvfcmp.sle.s $xr0, $xr0, $xr1419; CHECK-NEXT: ret420entry:421 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sle.s(<8 x float> %va, <8 x float> %vb)422 ret <8 x i32> %res423}424 425declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sle.d(<4 x double>, <4 x double>)426 427define <4 x i64> @lasx_xvfcmp_sle_d(<4 x double> %va, <4 x double> %vb) nounwind {428; CHECK-LABEL: lasx_xvfcmp_sle_d:429; CHECK: # %bb.0: # %entry430; CHECK-NEXT: xvfcmp.sle.d $xr0, $xr0, $xr1431; CHECK-NEXT: ret432entry:433 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sle.d(<4 x double> %va, <4 x double> %vb)434 ret <4 x i64> %res435}436 437declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sule.s(<8 x float>, <8 x float>)438 439define <8 x i32> @lasx_xvfcmp_sule_s(<8 x float> %va, <8 x float> %vb) nounwind {440; CHECK-LABEL: lasx_xvfcmp_sule_s:441; CHECK: # %bb.0: # %entry442; CHECK-NEXT: xvfcmp.sule.s $xr0, $xr0, $xr1443; CHECK-NEXT: ret444entry:445 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sule.s(<8 x float> %va, <8 x float> %vb)446 ret <8 x i32> %res447}448 449declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sule.d(<4 x double>, <4 x double>)450 451define <4 x i64> @lasx_xvfcmp_sule_d(<4 x double> %va, <4 x double> %vb) nounwind {452; CHECK-LABEL: lasx_xvfcmp_sule_d:453; CHECK: # %bb.0: # %entry454; CHECK-NEXT: xvfcmp.sule.d $xr0, $xr0, $xr1455; CHECK-NEXT: ret456entry:457 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sule.d(<4 x double> %va, <4 x double> %vb)458 ret <4 x i64> %res459}460 461declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sne.s(<8 x float>, <8 x float>)462 463define <8 x i32> @lasx_xvfcmp_sne_s(<8 x float> %va, <8 x float> %vb) nounwind {464; CHECK-LABEL: lasx_xvfcmp_sne_s:465; CHECK: # %bb.0: # %entry466; CHECK-NEXT: xvfcmp.sne.s $xr0, $xr0, $xr1467; CHECK-NEXT: ret468entry:469 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sne.s(<8 x float> %va, <8 x float> %vb)470 ret <8 x i32> %res471}472 473declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sne.d(<4 x double>, <4 x double>)474 475define <4 x i64> @lasx_xvfcmp_sne_d(<4 x double> %va, <4 x double> %vb) nounwind {476; CHECK-LABEL: lasx_xvfcmp_sne_d:477; CHECK: # %bb.0: # %entry478; CHECK-NEXT: xvfcmp.sne.d $xr0, $xr0, $xr1479; CHECK-NEXT: ret480entry:481 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sne.d(<4 x double> %va, <4 x double> %vb)482 ret <4 x i64> %res483}484 485declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sor.s(<8 x float>, <8 x float>)486 487define <8 x i32> @lasx_xvfcmp_sor_s(<8 x float> %va, <8 x float> %vb) nounwind {488; CHECK-LABEL: lasx_xvfcmp_sor_s:489; CHECK: # %bb.0: # %entry490; CHECK-NEXT: xvfcmp.sor.s $xr0, $xr0, $xr1491; CHECK-NEXT: ret492entry:493 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sor.s(<8 x float> %va, <8 x float> %vb)494 ret <8 x i32> %res495}496 497declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sor.d(<4 x double>, <4 x double>)498 499define <4 x i64> @lasx_xvfcmp_sor_d(<4 x double> %va, <4 x double> %vb) nounwind {500; CHECK-LABEL: lasx_xvfcmp_sor_d:501; CHECK: # %bb.0: # %entry502; CHECK-NEXT: xvfcmp.sor.d $xr0, $xr0, $xr1503; CHECK-NEXT: ret504entry:505 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sor.d(<4 x double> %va, <4 x double> %vb)506 ret <4 x i64> %res507}508 509declare <8 x i32> @llvm.loongarch.lasx.xvfcmp.sune.s(<8 x float>, <8 x float>)510 511define <8 x i32> @lasx_xvfcmp_sune_s(<8 x float> %va, <8 x float> %vb) nounwind {512; CHECK-LABEL: lasx_xvfcmp_sune_s:513; CHECK: # %bb.0: # %entry514; CHECK-NEXT: xvfcmp.sune.s $xr0, $xr0, $xr1515; CHECK-NEXT: ret516entry:517 %res = call <8 x i32> @llvm.loongarch.lasx.xvfcmp.sune.s(<8 x float> %va, <8 x float> %vb)518 ret <8 x i32> %res519}520 521declare <4 x i64> @llvm.loongarch.lasx.xvfcmp.sune.d(<4 x double>, <4 x double>)522 523define <4 x i64> @lasx_xvfcmp_sune_d(<4 x double> %va, <4 x double> %vb) nounwind {524; CHECK-LABEL: lasx_xvfcmp_sune_d:525; CHECK: # %bb.0: # %entry526; CHECK-NEXT: xvfcmp.sune.d $xr0, $xr0, $xr1527; CHECK-NEXT: ret528entry:529 %res = call <4 x i64> @llvm.loongarch.lasx.xvfcmp.sune.d(<4 x double> %va, <4 x double> %vb)530 ret <4 x i64> %res531}532