1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s 3 4declare <4 x i32> @llvm.loongarch.lsx.vfcmp.caf.s(<4 x float>, <4 x float>) 5 6define <4 x i32> @lsx_vfcmp_caf_s(<4 x float> %va, <4 x float> %vb) nounwind { 7; CHECK-LABEL: lsx_vfcmp_caf_s: 8; CHECK: # %bb.0: # %entry 9; CHECK-NEXT: vfcmp.caf.s $vr0, $vr0, $vr1 10; CHECK-NEXT: ret 11entry: 12 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.caf.s(<4 x float> %va, <4 x float> %vb) 13 ret <4 x i32> %res 14} 15 16declare <2 x i64> @llvm.loongarch.lsx.vfcmp.caf.d(<2 x double>, <2 x double>) 17 18define <2 x i64> @lsx_vfcmp_caf_d(<2 x double> %va, <2 x double> %vb) nounwind { 19; CHECK-LABEL: lsx_vfcmp_caf_d: 20; CHECK: # %bb.0: # %entry 21; CHECK-NEXT: vfcmp.caf.d $vr0, $vr0, $vr1 22; CHECK-NEXT: ret 23entry: 24 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.caf.d(<2 x double> %va, <2 x double> %vb) 25 ret <2 x i64> %res 26} 27 28declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cun.s(<4 x float>, <4 x float>) 29 30define <4 x i32> @lsx_vfcmp_cun_s(<4 x float> %va, <4 x float> %vb) nounwind { 31; CHECK-LABEL: lsx_vfcmp_cun_s: 32; CHECK: # %bb.0: # %entry 33; CHECK-NEXT: vfcmp.cun.s $vr0, $vr0, $vr1 34; CHECK-NEXT: ret 35entry: 36 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cun.s(<4 x float> %va, <4 x float> %vb) 37 ret <4 x i32> %res 38} 39 40declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cun.d(<2 x double>, <2 x double>) 41 42define <2 x i64> @lsx_vfcmp_cun_d(<2 x double> %va, <2 x double> %vb) nounwind { 43; CHECK-LABEL: lsx_vfcmp_cun_d: 44; CHECK: # %bb.0: # %entry 45; CHECK-NEXT: vfcmp.cun.d $vr0, $vr0, $vr1 46; CHECK-NEXT: ret 47entry: 48 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cun.d(<2 x double> %va, <2 x double> %vb) 49 ret <2 x i64> %res 50} 51 52declare <4 x i32> @llvm.loongarch.lsx.vfcmp.ceq.s(<4 x float>, <4 x float>) 53 54define <4 x i32> @lsx_vfcmp_ceq_s(<4 x float> %va, <4 x float> %vb) nounwind { 55; CHECK-LABEL: lsx_vfcmp_ceq_s: 56; CHECK: # %bb.0: # %entry 57; CHECK-NEXT: vfcmp.ceq.s $vr0, $vr0, $vr1 58; CHECK-NEXT: ret 59entry: 60 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.ceq.s(<4 x float> %va, <4 x float> %vb) 61 ret <4 x i32> %res 62} 63 64declare <2 x i64> @llvm.loongarch.lsx.vfcmp.ceq.d(<2 x double>, <2 x double>) 65 66define <2 x i64> @lsx_vfcmp_ceq_d(<2 x double> %va, <2 x double> %vb) nounwind { 67; CHECK-LABEL: lsx_vfcmp_ceq_d: 68; CHECK: # %bb.0: # %entry 69; CHECK-NEXT: vfcmp.ceq.d $vr0, $vr0, $vr1 70; CHECK-NEXT: ret 71entry: 72 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.ceq.d(<2 x double> %va, <2 x double> %vb) 73 ret <2 x i64> %res 74} 75 76declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cueq.s(<4 x float>, <4 x float>) 77 78define <4 x i32> @lsx_vfcmp_cueq_s(<4 x float> %va, <4 x float> %vb) nounwind { 79; CHECK-LABEL: lsx_vfcmp_cueq_s: 80; CHECK: # %bb.0: # %entry 81; CHECK-NEXT: vfcmp.cueq.s $vr0, $vr0, $vr1 82; CHECK-NEXT: ret 83entry: 84 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cueq.s(<4 x float> %va, <4 x float> %vb) 85 ret <4 x i32> %res 86} 87 88declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cueq.d(<2 x double>, <2 x double>) 89 90define <2 x i64> @lsx_vfcmp_cueq_d(<2 x double> %va, <2 x double> %vb) nounwind { 91; CHECK-LABEL: lsx_vfcmp_cueq_d: 92; CHECK: # %bb.0: # %entry 93; CHECK-NEXT: vfcmp.cueq.d $vr0, $vr0, $vr1 94; CHECK-NEXT: ret 95entry: 96 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cueq.d(<2 x double> %va, <2 x double> %vb) 97 ret <2 x i64> %res 98} 99 100declare <4 x i32> @llvm.loongarch.lsx.vfcmp.clt.s(<4 x float>, <4 x float>) 101 102define <4 x i32> @lsx_vfcmp_clt_s(<4 x float> %va, <4 x float> %vb) nounwind { 103; CHECK-LABEL: lsx_vfcmp_clt_s: 104; CHECK: # %bb.0: # %entry 105; CHECK-NEXT: vfcmp.clt.s $vr0, $vr0, $vr1 106; CHECK-NEXT: ret 107entry: 108 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.clt.s(<4 x float> %va, <4 x float> %vb) 109 ret <4 x i32> %res 110} 111 112declare <2 x i64> @llvm.loongarch.lsx.vfcmp.clt.d(<2 x double>, <2 x double>) 113 114define <2 x i64> @lsx_vfcmp_clt_d(<2 x double> %va, <2 x double> %vb) nounwind { 115; CHECK-LABEL: lsx_vfcmp_clt_d: 116; CHECK: # %bb.0: # %entry 117; CHECK-NEXT: vfcmp.clt.d $vr0, $vr0, $vr1 118; CHECK-NEXT: ret 119entry: 120 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.clt.d(<2 x double> %va, <2 x double> %vb) 121 ret <2 x i64> %res 122} 123 124declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cult.s(<4 x float>, <4 x float>) 125 126define <4 x i32> @lsx_vfcmp_cult_s(<4 x float> %va, <4 x float> %vb) nounwind { 127; CHECK-LABEL: lsx_vfcmp_cult_s: 128; CHECK: # %bb.0: # %entry 129; CHECK-NEXT: vfcmp.cult.s $vr0, $vr0, $vr1 130; CHECK-NEXT: ret 131entry: 132 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cult.s(<4 x float> %va, <4 x float> %vb) 133 ret <4 x i32> %res 134} 135 136declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cult.d(<2 x double>, <2 x double>) 137 138define <2 x i64> @lsx_vfcmp_cult_d(<2 x double> %va, <2 x double> %vb) nounwind { 139; CHECK-LABEL: lsx_vfcmp_cult_d: 140; CHECK: # %bb.0: # %entry 141; CHECK-NEXT: vfcmp.cult.d $vr0, $vr0, $vr1 142; CHECK-NEXT: ret 143entry: 144 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cult.d(<2 x double> %va, <2 x double> %vb) 145 ret <2 x i64> %res 146} 147 148declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cle.s(<4 x float>, <4 x float>) 149 150define <4 x i32> @lsx_vfcmp_cle_s(<4 x float> %va, <4 x float> %vb) nounwind { 151; CHECK-LABEL: lsx_vfcmp_cle_s: 152; CHECK: # %bb.0: # %entry 153; CHECK-NEXT: vfcmp.cle.s $vr0, $vr0, $vr1 154; CHECK-NEXT: ret 155entry: 156 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cle.s(<4 x float> %va, <4 x float> %vb) 157 ret <4 x i32> %res 158} 159 160declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cle.d(<2 x double>, <2 x double>) 161 162define <2 x i64> @lsx_vfcmp_cle_d(<2 x double> %va, <2 x double> %vb) nounwind { 163; CHECK-LABEL: lsx_vfcmp_cle_d: 164; CHECK: # %bb.0: # %entry 165; CHECK-NEXT: vfcmp.cle.d $vr0, $vr0, $vr1 166; CHECK-NEXT: ret 167entry: 168 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cle.d(<2 x double> %va, <2 x double> %vb) 169 ret <2 x i64> %res 170} 171 172declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cule.s(<4 x float>, <4 x float>) 173 174define <4 x i32> @lsx_vfcmp_cule_s(<4 x float> %va, <4 x float> %vb) nounwind { 175; CHECK-LABEL: lsx_vfcmp_cule_s: 176; CHECK: # %bb.0: # %entry 177; CHECK-NEXT: vfcmp.cule.s $vr0, $vr0, $vr1 178; CHECK-NEXT: ret 179entry: 180 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cule.s(<4 x float> %va, <4 x float> %vb) 181 ret <4 x i32> %res 182} 183 184declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cule.d(<2 x double>, <2 x double>) 185 186define <2 x i64> @lsx_vfcmp_cule_d(<2 x double> %va, <2 x double> %vb) nounwind { 187; CHECK-LABEL: lsx_vfcmp_cule_d: 188; CHECK: # %bb.0: # %entry 189; CHECK-NEXT: vfcmp.cule.d $vr0, $vr0, $vr1 190; CHECK-NEXT: ret 191entry: 192 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cule.d(<2 x double> %va, <2 x double> %vb) 193 ret <2 x i64> %res 194} 195 196declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cne.s(<4 x float>, <4 x float>) 197 198define <4 x i32> @lsx_vfcmp_cne_s(<4 x float> %va, <4 x float> %vb) nounwind { 199; CHECK-LABEL: lsx_vfcmp_cne_s: 200; CHECK: # %bb.0: # %entry 201; CHECK-NEXT: vfcmp.cne.s $vr0, $vr0, $vr1 202; CHECK-NEXT: ret 203entry: 204 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cne.s(<4 x float> %va, <4 x float> %vb) 205 ret <4 x i32> %res 206} 207 208declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cne.d(<2 x double>, <2 x double>) 209 210define <2 x i64> @lsx_vfcmp_cne_d(<2 x double> %va, <2 x double> %vb) nounwind { 211; CHECK-LABEL: lsx_vfcmp_cne_d: 212; CHECK: # %bb.0: # %entry 213; CHECK-NEXT: vfcmp.cne.d $vr0, $vr0, $vr1 214; CHECK-NEXT: ret 215entry: 216 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cne.d(<2 x double> %va, <2 x double> %vb) 217 ret <2 x i64> %res 218} 219 220declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cor.s(<4 x float>, <4 x float>) 221 222define <4 x i32> @lsx_vfcmp_cor_s(<4 x float> %va, <4 x float> %vb) nounwind { 223; CHECK-LABEL: lsx_vfcmp_cor_s: 224; CHECK: # %bb.0: # %entry 225; CHECK-NEXT: vfcmp.cor.s $vr0, $vr0, $vr1 226; CHECK-NEXT: ret 227entry: 228 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cor.s(<4 x float> %va, <4 x float> %vb) 229 ret <4 x i32> %res 230} 231 232declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cor.d(<2 x double>, <2 x double>) 233 234define <2 x i64> @lsx_vfcmp_cor_d(<2 x double> %va, <2 x double> %vb) nounwind { 235; CHECK-LABEL: lsx_vfcmp_cor_d: 236; CHECK: # %bb.0: # %entry 237; CHECK-NEXT: vfcmp.cor.d $vr0, $vr0, $vr1 238; CHECK-NEXT: ret 239entry: 240 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cor.d(<2 x double> %va, <2 x double> %vb) 241 ret <2 x i64> %res 242} 243 244declare <4 x i32> @llvm.loongarch.lsx.vfcmp.cune.s(<4 x float>, <4 x float>) 245 246define <4 x i32> @lsx_vfcmp_cune_s(<4 x float> %va, <4 x float> %vb) nounwind { 247; CHECK-LABEL: lsx_vfcmp_cune_s: 248; CHECK: # %bb.0: # %entry 249; CHECK-NEXT: vfcmp.cune.s $vr0, $vr0, $vr1 250; CHECK-NEXT: ret 251entry: 252 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.cune.s(<4 x float> %va, <4 x float> %vb) 253 ret <4 x i32> %res 254} 255 256declare <2 x i64> @llvm.loongarch.lsx.vfcmp.cune.d(<2 x double>, <2 x double>) 257 258define <2 x i64> @lsx_vfcmp_cune_d(<2 x double> %va, <2 x double> %vb) nounwind { 259; CHECK-LABEL: lsx_vfcmp_cune_d: 260; CHECK: # %bb.0: # %entry 261; CHECK-NEXT: vfcmp.cune.d $vr0, $vr0, $vr1 262; CHECK-NEXT: ret 263entry: 264 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.cune.d(<2 x double> %va, <2 x double> %vb) 265 ret <2 x i64> %res 266} 267 268declare <4 x i32> @llvm.loongarch.lsx.vfcmp.saf.s(<4 x float>, <4 x float>) 269 270define <4 x i32> @lsx_vfcmp_saf_s(<4 x float> %va, <4 x float> %vb) nounwind { 271; CHECK-LABEL: lsx_vfcmp_saf_s: 272; CHECK: # %bb.0: # %entry 273; CHECK-NEXT: vfcmp.saf.s $vr0, $vr0, $vr1 274; CHECK-NEXT: ret 275entry: 276 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.saf.s(<4 x float> %va, <4 x float> %vb) 277 ret <4 x i32> %res 278} 279 280declare <2 x i64> @llvm.loongarch.lsx.vfcmp.saf.d(<2 x double>, <2 x double>) 281 282define <2 x i64> @lsx_vfcmp_saf_d(<2 x double> %va, <2 x double> %vb) nounwind { 283; CHECK-LABEL: lsx_vfcmp_saf_d: 284; CHECK: # %bb.0: # %entry 285; CHECK-NEXT: vfcmp.saf.d $vr0, $vr0, $vr1 286; CHECK-NEXT: ret 287entry: 288 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.saf.d(<2 x double> %va, <2 x double> %vb) 289 ret <2 x i64> %res 290} 291 292declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sun.s(<4 x float>, <4 x float>) 293 294define <4 x i32> @lsx_vfcmp_sun_s(<4 x float> %va, <4 x float> %vb) nounwind { 295; CHECK-LABEL: lsx_vfcmp_sun_s: 296; CHECK: # %bb.0: # %entry 297; CHECK-NEXT: vfcmp.sun.s $vr0, $vr0, $vr1 298; CHECK-NEXT: ret 299entry: 300 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sun.s(<4 x float> %va, <4 x float> %vb) 301 ret <4 x i32> %res 302} 303 304declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sun.d(<2 x double>, <2 x double>) 305 306define <2 x i64> @lsx_vfcmp_sun_d(<2 x double> %va, <2 x double> %vb) nounwind { 307; CHECK-LABEL: lsx_vfcmp_sun_d: 308; CHECK: # %bb.0: # %entry 309; CHECK-NEXT: vfcmp.sun.d $vr0, $vr0, $vr1 310; CHECK-NEXT: ret 311entry: 312 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sun.d(<2 x double> %va, <2 x double> %vb) 313 ret <2 x i64> %res 314} 315 316declare <4 x i32> @llvm.loongarch.lsx.vfcmp.seq.s(<4 x float>, <4 x float>) 317 318define <4 x i32> @lsx_vfcmp_seq_s(<4 x float> %va, <4 x float> %vb) nounwind { 319; CHECK-LABEL: lsx_vfcmp_seq_s: 320; CHECK: # %bb.0: # %entry 321; CHECK-NEXT: vfcmp.seq.s $vr0, $vr0, $vr1 322; CHECK-NEXT: ret 323entry: 324 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.seq.s(<4 x float> %va, <4 x float> %vb) 325 ret <4 x i32> %res 326} 327 328declare <2 x i64> @llvm.loongarch.lsx.vfcmp.seq.d(<2 x double>, <2 x double>) 329 330define <2 x i64> @lsx_vfcmp_seq_d(<2 x double> %va, <2 x double> %vb) nounwind { 331; CHECK-LABEL: lsx_vfcmp_seq_d: 332; CHECK: # %bb.0: # %entry 333; CHECK-NEXT: vfcmp.seq.d $vr0, $vr0, $vr1 334; CHECK-NEXT: ret 335entry: 336 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.seq.d(<2 x double> %va, <2 x double> %vb) 337 ret <2 x i64> %res 338} 339 340declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sueq.s(<4 x float>, <4 x float>) 341 342define <4 x i32> @lsx_vfcmp_sueq_s(<4 x float> %va, <4 x float> %vb) nounwind { 343; CHECK-LABEL: lsx_vfcmp_sueq_s: 344; CHECK: # %bb.0: # %entry 345; CHECK-NEXT: vfcmp.sueq.s $vr0, $vr0, $vr1 346; CHECK-NEXT: ret 347entry: 348 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sueq.s(<4 x float> %va, <4 x float> %vb) 349 ret <4 x i32> %res 350} 351 352declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sueq.d(<2 x double>, <2 x double>) 353 354define <2 x i64> @lsx_vfcmp_sueq_d(<2 x double> %va, <2 x double> %vb) nounwind { 355; CHECK-LABEL: lsx_vfcmp_sueq_d: 356; CHECK: # %bb.0: # %entry 357; CHECK-NEXT: vfcmp.sueq.d $vr0, $vr0, $vr1 358; CHECK-NEXT: ret 359entry: 360 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sueq.d(<2 x double> %va, <2 x double> %vb) 361 ret <2 x i64> %res 362} 363 364declare <4 x i32> @llvm.loongarch.lsx.vfcmp.slt.s(<4 x float>, <4 x float>) 365 366define <4 x i32> @lsx_vfcmp_slt_s(<4 x float> %va, <4 x float> %vb) nounwind { 367; CHECK-LABEL: lsx_vfcmp_slt_s: 368; CHECK: # %bb.0: # %entry 369; CHECK-NEXT: vfcmp.slt.s $vr0, $vr0, $vr1 370; CHECK-NEXT: ret 371entry: 372 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.slt.s(<4 x float> %va, <4 x float> %vb) 373 ret <4 x i32> %res 374} 375 376declare <2 x i64> @llvm.loongarch.lsx.vfcmp.slt.d(<2 x double>, <2 x double>) 377 378define <2 x i64> @lsx_vfcmp_slt_d(<2 x double> %va, <2 x double> %vb) nounwind { 379; CHECK-LABEL: lsx_vfcmp_slt_d: 380; CHECK: # %bb.0: # %entry 381; CHECK-NEXT: vfcmp.slt.d $vr0, $vr0, $vr1 382; CHECK-NEXT: ret 383entry: 384 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.slt.d(<2 x double> %va, <2 x double> %vb) 385 ret <2 x i64> %res 386} 387 388declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sult.s(<4 x float>, <4 x float>) 389 390define <4 x i32> @lsx_vfcmp_sult_s(<4 x float> %va, <4 x float> %vb) nounwind { 391; CHECK-LABEL: lsx_vfcmp_sult_s: 392; CHECK: # %bb.0: # %entry 393; CHECK-NEXT: vfcmp.sult.s $vr0, $vr0, $vr1 394; CHECK-NEXT: ret 395entry: 396 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sult.s(<4 x float> %va, <4 x float> %vb) 397 ret <4 x i32> %res 398} 399 400declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sult.d(<2 x double>, <2 x double>) 401 402define <2 x i64> @lsx_vfcmp_sult_d(<2 x double> %va, <2 x double> %vb) nounwind { 403; CHECK-LABEL: lsx_vfcmp_sult_d: 404; CHECK: # %bb.0: # %entry 405; CHECK-NEXT: vfcmp.sult.d $vr0, $vr0, $vr1 406; CHECK-NEXT: ret 407entry: 408 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sult.d(<2 x double> %va, <2 x double> %vb) 409 ret <2 x i64> %res 410} 411 412declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sle.s(<4 x float>, <4 x float>) 413 414define <4 x i32> @lsx_vfcmp_sle_s(<4 x float> %va, <4 x float> %vb) nounwind { 415; CHECK-LABEL: lsx_vfcmp_sle_s: 416; CHECK: # %bb.0: # %entry 417; CHECK-NEXT: vfcmp.sle.s $vr0, $vr0, $vr1 418; CHECK-NEXT: ret 419entry: 420 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sle.s(<4 x float> %va, <4 x float> %vb) 421 ret <4 x i32> %res 422} 423 424declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sle.d(<2 x double>, <2 x double>) 425 426define <2 x i64> @lsx_vfcmp_sle_d(<2 x double> %va, <2 x double> %vb) nounwind { 427; CHECK-LABEL: lsx_vfcmp_sle_d: 428; CHECK: # %bb.0: # %entry 429; CHECK-NEXT: vfcmp.sle.d $vr0, $vr0, $vr1 430; CHECK-NEXT: ret 431entry: 432 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sle.d(<2 x double> %va, <2 x double> %vb) 433 ret <2 x i64> %res 434} 435 436declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sule.s(<4 x float>, <4 x float>) 437 438define <4 x i32> @lsx_vfcmp_sule_s(<4 x float> %va, <4 x float> %vb) nounwind { 439; CHECK-LABEL: lsx_vfcmp_sule_s: 440; CHECK: # %bb.0: # %entry 441; CHECK-NEXT: vfcmp.sule.s $vr0, $vr0, $vr1 442; CHECK-NEXT: ret 443entry: 444 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sule.s(<4 x float> %va, <4 x float> %vb) 445 ret <4 x i32> %res 446} 447 448declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sule.d(<2 x double>, <2 x double>) 449 450define <2 x i64> @lsx_vfcmp_sule_d(<2 x double> %va, <2 x double> %vb) nounwind { 451; CHECK-LABEL: lsx_vfcmp_sule_d: 452; CHECK: # %bb.0: # %entry 453; CHECK-NEXT: vfcmp.sule.d $vr0, $vr0, $vr1 454; CHECK-NEXT: ret 455entry: 456 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sule.d(<2 x double> %va, <2 x double> %vb) 457 ret <2 x i64> %res 458} 459 460declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sne.s(<4 x float>, <4 x float>) 461 462define <4 x i32> @lsx_vfcmp_sne_s(<4 x float> %va, <4 x float> %vb) nounwind { 463; CHECK-LABEL: lsx_vfcmp_sne_s: 464; CHECK: # %bb.0: # %entry 465; CHECK-NEXT: vfcmp.sne.s $vr0, $vr0, $vr1 466; CHECK-NEXT: ret 467entry: 468 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sne.s(<4 x float> %va, <4 x float> %vb) 469 ret <4 x i32> %res 470} 471 472declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sne.d(<2 x double>, <2 x double>) 473 474define <2 x i64> @lsx_vfcmp_sne_d(<2 x double> %va, <2 x double> %vb) nounwind { 475; CHECK-LABEL: lsx_vfcmp_sne_d: 476; CHECK: # %bb.0: # %entry 477; CHECK-NEXT: vfcmp.sne.d $vr0, $vr0, $vr1 478; CHECK-NEXT: ret 479entry: 480 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sne.d(<2 x double> %va, <2 x double> %vb) 481 ret <2 x i64> %res 482} 483 484declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sor.s(<4 x float>, <4 x float>) 485 486define <4 x i32> @lsx_vfcmp_sor_s(<4 x float> %va, <4 x float> %vb) nounwind { 487; CHECK-LABEL: lsx_vfcmp_sor_s: 488; CHECK: # %bb.0: # %entry 489; CHECK-NEXT: vfcmp.sor.s $vr0, $vr0, $vr1 490; CHECK-NEXT: ret 491entry: 492 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sor.s(<4 x float> %va, <4 x float> %vb) 493 ret <4 x i32> %res 494} 495 496declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sor.d(<2 x double>, <2 x double>) 497 498define <2 x i64> @lsx_vfcmp_sor_d(<2 x double> %va, <2 x double> %vb) nounwind { 499; CHECK-LABEL: lsx_vfcmp_sor_d: 500; CHECK: # %bb.0: # %entry 501; CHECK-NEXT: vfcmp.sor.d $vr0, $vr0, $vr1 502; CHECK-NEXT: ret 503entry: 504 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sor.d(<2 x double> %va, <2 x double> %vb) 505 ret <2 x i64> %res 506} 507 508declare <4 x i32> @llvm.loongarch.lsx.vfcmp.sune.s(<4 x float>, <4 x float>) 509 510define <4 x i32> @lsx_vfcmp_sune_s(<4 x float> %va, <4 x float> %vb) nounwind { 511; CHECK-LABEL: lsx_vfcmp_sune_s: 512; CHECK: # %bb.0: # %entry 513; CHECK-NEXT: vfcmp.sune.s $vr0, $vr0, $vr1 514; CHECK-NEXT: ret 515entry: 516 %res = call <4 x i32> @llvm.loongarch.lsx.vfcmp.sune.s(<4 x float> %va, <4 x float> %vb) 517 ret <4 x i32> %res 518} 519 520declare <2 x i64> @llvm.loongarch.lsx.vfcmp.sune.d(<2 x double>, <2 x double>) 521 522define <2 x i64> @lsx_vfcmp_sune_d(<2 x double> %va, <2 x double> %vb) nounwind { 523; CHECK-LABEL: lsx_vfcmp_sune_d: 524; CHECK: # %bb.0: # %entry 525; CHECK-NEXT: vfcmp.sune.d $vr0, $vr0, $vr1 526; CHECK-NEXT: ret 527entry: 528 %res = call <2 x i64> @llvm.loongarch.lsx.vfcmp.sune.d(<2 x double> %va, <2 x double> %vb) 529 ret <2 x i64> %res 530} 531