1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s 3 4declare <8 x i32> @llvm.loongarch.lasx.xvftintrne.w.s(<8 x float>) 5 6define <8 x i32> @lasx_xvftintrne_w_s(<8 x float> %va) nounwind { 7; CHECK-LABEL: lasx_xvftintrne_w_s: 8; CHECK: # %bb.0: # %entry 9; CHECK-NEXT: xvftintrne.w.s $xr0, $xr0 10; CHECK-NEXT: ret 11entry: 12 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrne.w.s(<8 x float> %va) 13 ret <8 x i32> %res 14} 15 16declare <4 x i64> @llvm.loongarch.lasx.xvftintrne.l.d(<4 x double>) 17 18define <4 x i64> @lasx_xvftintrne_l_d(<4 x double> %va) nounwind { 19; CHECK-LABEL: lasx_xvftintrne_l_d: 20; CHECK: # %bb.0: # %entry 21; CHECK-NEXT: xvftintrne.l.d $xr0, $xr0 22; CHECK-NEXT: ret 23entry: 24 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrne.l.d(<4 x double> %va) 25 ret <4 x i64> %res 26} 27 28declare <8 x i32> @llvm.loongarch.lasx.xvftintrz.w.s(<8 x float>) 29 30define <8 x i32> @lasx_xvftintrz_w_s(<8 x float> %va) nounwind { 31; CHECK-LABEL: lasx_xvftintrz_w_s: 32; CHECK: # %bb.0: # %entry 33; CHECK-NEXT: xvftintrz.w.s $xr0, $xr0 34; CHECK-NEXT: ret 35entry: 36 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrz.w.s(<8 x float> %va) 37 ret <8 x i32> %res 38} 39 40declare <4 x i64> @llvm.loongarch.lasx.xvftintrz.l.d(<4 x double>) 41 42define <4 x i64> @lasx_xvftintrz_l_d(<4 x double> %va) nounwind { 43; CHECK-LABEL: lasx_xvftintrz_l_d: 44; CHECK: # %bb.0: # %entry 45; CHECK-NEXT: xvftintrz.l.d $xr0, $xr0 46; CHECK-NEXT: ret 47entry: 48 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrz.l.d(<4 x double> %va) 49 ret <4 x i64> %res 50} 51 52declare <8 x i32> @llvm.loongarch.lasx.xvftintrp.w.s(<8 x float>) 53 54define <8 x i32> @lasx_xvftintrp_w_s(<8 x float> %va) nounwind { 55; CHECK-LABEL: lasx_xvftintrp_w_s: 56; CHECK: # %bb.0: # %entry 57; CHECK-NEXT: xvftintrp.w.s $xr0, $xr0 58; CHECK-NEXT: ret 59entry: 60 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrp.w.s(<8 x float> %va) 61 ret <8 x i32> %res 62} 63 64declare <4 x i64> @llvm.loongarch.lasx.xvftintrp.l.d(<4 x double>) 65 66define <4 x i64> @lasx_xvftintrp_l_d(<4 x double> %va) nounwind { 67; CHECK-LABEL: lasx_xvftintrp_l_d: 68; CHECK: # %bb.0: # %entry 69; CHECK-NEXT: xvftintrp.l.d $xr0, $xr0 70; CHECK-NEXT: ret 71entry: 72 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrp.l.d(<4 x double> %va) 73 ret <4 x i64> %res 74} 75 76declare <8 x i32> @llvm.loongarch.lasx.xvftintrm.w.s(<8 x float>) 77 78define <8 x i32> @lasx_xvftintrm_w_s(<8 x float> %va) nounwind { 79; CHECK-LABEL: lasx_xvftintrm_w_s: 80; CHECK: # %bb.0: # %entry 81; CHECK-NEXT: xvftintrm.w.s $xr0, $xr0 82; CHECK-NEXT: ret 83entry: 84 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrm.w.s(<8 x float> %va) 85 ret <8 x i32> %res 86} 87 88declare <4 x i64> @llvm.loongarch.lasx.xvftintrm.l.d(<4 x double>) 89 90define <4 x i64> @lasx_xvftintrm_l_d(<4 x double> %va) nounwind { 91; CHECK-LABEL: lasx_xvftintrm_l_d: 92; CHECK: # %bb.0: # %entry 93; CHECK-NEXT: xvftintrm.l.d $xr0, $xr0 94; CHECK-NEXT: ret 95entry: 96 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrm.l.d(<4 x double> %va) 97 ret <4 x i64> %res 98} 99 100declare <8 x i32> @llvm.loongarch.lasx.xvftint.w.s(<8 x float>) 101 102define <8 x i32> @lasx_xvftint_w_s(<8 x float> %va) nounwind { 103; CHECK-LABEL: lasx_xvftint_w_s: 104; CHECK: # %bb.0: # %entry 105; CHECK-NEXT: xvftint.w.s $xr0, $xr0 106; CHECK-NEXT: ret 107entry: 108 %res = call <8 x i32> @llvm.loongarch.lasx.xvftint.w.s(<8 x float> %va) 109 ret <8 x i32> %res 110} 111 112declare <4 x i64> @llvm.loongarch.lasx.xvftint.l.d(<4 x double>) 113 114define <4 x i64> @lasx_xvftint_l_d(<4 x double> %va) nounwind { 115; CHECK-LABEL: lasx_xvftint_l_d: 116; CHECK: # %bb.0: # %entry 117; CHECK-NEXT: xvftint.l.d $xr0, $xr0 118; CHECK-NEXT: ret 119entry: 120 %res = call <4 x i64> @llvm.loongarch.lasx.xvftint.l.d(<4 x double> %va) 121 ret <4 x i64> %res 122} 123 124declare <8 x i32> @llvm.loongarch.lasx.xvftintrz.wu.s(<8 x float>) 125 126define <8 x i32> @lasx_xvftintrz_wu_s(<8 x float> %va) nounwind { 127; CHECK-LABEL: lasx_xvftintrz_wu_s: 128; CHECK: # %bb.0: # %entry 129; CHECK-NEXT: xvftintrz.wu.s $xr0, $xr0 130; CHECK-NEXT: ret 131entry: 132 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrz.wu.s(<8 x float> %va) 133 ret <8 x i32> %res 134} 135 136declare <4 x i64> @llvm.loongarch.lasx.xvftintrz.lu.d(<4 x double>) 137 138define <4 x i64> @lasx_xvftintrz_lu_d(<4 x double> %va) nounwind { 139; CHECK-LABEL: lasx_xvftintrz_lu_d: 140; CHECK: # %bb.0: # %entry 141; CHECK-NEXT: xvftintrz.lu.d $xr0, $xr0 142; CHECK-NEXT: ret 143entry: 144 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrz.lu.d(<4 x double> %va) 145 ret <4 x i64> %res 146} 147 148declare <8 x i32> @llvm.loongarch.lasx.xvftint.wu.s(<8 x float>) 149 150define <8 x i32> @lasx_xvftint_wu_s(<8 x float> %va) nounwind { 151; CHECK-LABEL: lasx_xvftint_wu_s: 152; CHECK: # %bb.0: # %entry 153; CHECK-NEXT: xvftint.wu.s $xr0, $xr0 154; CHECK-NEXT: ret 155entry: 156 %res = call <8 x i32> @llvm.loongarch.lasx.xvftint.wu.s(<8 x float> %va) 157 ret <8 x i32> %res 158} 159 160declare <4 x i64> @llvm.loongarch.lasx.xvftint.lu.d(<4 x double>) 161 162define <4 x i64> @lasx_xvftint_lu_d(<4 x double> %va) nounwind { 163; CHECK-LABEL: lasx_xvftint_lu_d: 164; CHECK: # %bb.0: # %entry 165; CHECK-NEXT: xvftint.lu.d $xr0, $xr0 166; CHECK-NEXT: ret 167entry: 168 %res = call <4 x i64> @llvm.loongarch.lasx.xvftint.lu.d(<4 x double> %va) 169 ret <4 x i64> %res 170} 171 172declare <8 x i32> @llvm.loongarch.lasx.xvftintrne.w.d(<4 x double>, <4 x double>) 173 174define <8 x i32> @lasx_xvftintrne_w_d(<4 x double> %va, <4 x double> %vb) nounwind { 175; CHECK-LABEL: lasx_xvftintrne_w_d: 176; CHECK: # %bb.0: # %entry 177; CHECK-NEXT: xvftintrne.w.d $xr0, $xr0, $xr1 178; CHECK-NEXT: ret 179entry: 180 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrne.w.d(<4 x double> %va, <4 x double> %vb) 181 ret <8 x i32> %res 182} 183 184declare <8 x i32> @llvm.loongarch.lasx.xvftintrz.w.d(<4 x double>, <4 x double>) 185 186define <8 x i32> @lasx_xvftintrz_w_d(<4 x double> %va, <4 x double> %vb) nounwind { 187; CHECK-LABEL: lasx_xvftintrz_w_d: 188; CHECK: # %bb.0: # %entry 189; CHECK-NEXT: xvftintrz.w.d $xr0, $xr0, $xr1 190; CHECK-NEXT: ret 191entry: 192 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrz.w.d(<4 x double> %va, <4 x double> %vb) 193 ret <8 x i32> %res 194} 195 196declare <8 x i32> @llvm.loongarch.lasx.xvftintrp.w.d(<4 x double>, <4 x double>) 197 198define <8 x i32> @lasx_xvftintrp_w_d(<4 x double> %va, <4 x double> %vb) nounwind { 199; CHECK-LABEL: lasx_xvftintrp_w_d: 200; CHECK: # %bb.0: # %entry 201; CHECK-NEXT: xvftintrp.w.d $xr0, $xr0, $xr1 202; CHECK-NEXT: ret 203entry: 204 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrp.w.d(<4 x double> %va, <4 x double> %vb) 205 ret <8 x i32> %res 206} 207 208declare <8 x i32> @llvm.loongarch.lasx.xvftintrm.w.d(<4 x double>, <4 x double>) 209 210define <8 x i32> @lasx_xvftintrm_w_d(<4 x double> %va, <4 x double> %vb) nounwind { 211; CHECK-LABEL: lasx_xvftintrm_w_d: 212; CHECK: # %bb.0: # %entry 213; CHECK-NEXT: xvftintrm.w.d $xr0, $xr0, $xr1 214; CHECK-NEXT: ret 215entry: 216 %res = call <8 x i32> @llvm.loongarch.lasx.xvftintrm.w.d(<4 x double> %va, <4 x double> %vb) 217 ret <8 x i32> %res 218} 219 220declare <8 x i32> @llvm.loongarch.lasx.xvftint.w.d(<4 x double>, <4 x double>) 221 222define <8 x i32> @lasx_xvftint_w_d(<4 x double> %va, <4 x double> %vb) nounwind { 223; CHECK-LABEL: lasx_xvftint_w_d: 224; CHECK: # %bb.0: # %entry 225; CHECK-NEXT: xvftint.w.d $xr0, $xr0, $xr1 226; CHECK-NEXT: ret 227entry: 228 %res = call <8 x i32> @llvm.loongarch.lasx.xvftint.w.d(<4 x double> %va, <4 x double> %vb) 229 ret <8 x i32> %res 230} 231 232declare <4 x i64> @llvm.loongarch.lasx.xvftintrnel.l.s(<8 x float>) 233 234define <4 x i64> @lasx_xvftintrnel_l_s(<8 x float> %va) nounwind { 235; CHECK-LABEL: lasx_xvftintrnel_l_s: 236; CHECK: # %bb.0: # %entry 237; CHECK-NEXT: xvftintrnel.l.s $xr0, $xr0 238; CHECK-NEXT: ret 239entry: 240 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrnel.l.s(<8 x float> %va) 241 ret <4 x i64> %res 242} 243 244declare <4 x i64> @llvm.loongarch.lasx.xvftintrneh.l.s(<8 x float>) 245 246define <4 x i64> @lasx_xvftintrneh_l_s(<8 x float> %va) nounwind { 247; CHECK-LABEL: lasx_xvftintrneh_l_s: 248; CHECK: # %bb.0: # %entry 249; CHECK-NEXT: xvftintrneh.l.s $xr0, $xr0 250; CHECK-NEXT: ret 251entry: 252 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrneh.l.s(<8 x float> %va) 253 ret <4 x i64> %res 254} 255 256declare <4 x i64> @llvm.loongarch.lasx.xvftintrzl.l.s(<8 x float>) 257 258define <4 x i64> @lasx_xvftintrzl_l_s(<8 x float> %va) nounwind { 259; CHECK-LABEL: lasx_xvftintrzl_l_s: 260; CHECK: # %bb.0: # %entry 261; CHECK-NEXT: xvftintrzl.l.s $xr0, $xr0 262; CHECK-NEXT: ret 263entry: 264 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrzl.l.s(<8 x float> %va) 265 ret <4 x i64> %res 266} 267 268declare <4 x i64> @llvm.loongarch.lasx.xvftintrzh.l.s(<8 x float>) 269 270define <4 x i64> @lasx_xvftintrzh_l_s(<8 x float> %va) nounwind { 271; CHECK-LABEL: lasx_xvftintrzh_l_s: 272; CHECK: # %bb.0: # %entry 273; CHECK-NEXT: xvftintrzh.l.s $xr0, $xr0 274; CHECK-NEXT: ret 275entry: 276 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrzh.l.s(<8 x float> %va) 277 ret <4 x i64> %res 278} 279 280declare <4 x i64> @llvm.loongarch.lasx.xvftintrpl.l.s(<8 x float>) 281 282define <4 x i64> @lasx_xvftintrpl_l_s(<8 x float> %va) nounwind { 283; CHECK-LABEL: lasx_xvftintrpl_l_s: 284; CHECK: # %bb.0: # %entry 285; CHECK-NEXT: xvftintrpl.l.s $xr0, $xr0 286; CHECK-NEXT: ret 287entry: 288 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrpl.l.s(<8 x float> %va) 289 ret <4 x i64> %res 290} 291 292declare <4 x i64> @llvm.loongarch.lasx.xvftintrph.l.s(<8 x float>) 293 294define <4 x i64> @lasx_xvftintrph_l_s(<8 x float> %va) nounwind { 295; CHECK-LABEL: lasx_xvftintrph_l_s: 296; CHECK: # %bb.0: # %entry 297; CHECK-NEXT: xvftintrph.l.s $xr0, $xr0 298; CHECK-NEXT: ret 299entry: 300 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrph.l.s(<8 x float> %va) 301 ret <4 x i64> %res 302} 303 304declare <4 x i64> @llvm.loongarch.lasx.xvftintrml.l.s(<8 x float>) 305 306define <4 x i64> @lasx_xvftintrml_l_s(<8 x float> %va) nounwind { 307; CHECK-LABEL: lasx_xvftintrml_l_s: 308; CHECK: # %bb.0: # %entry 309; CHECK-NEXT: xvftintrml.l.s $xr0, $xr0 310; CHECK-NEXT: ret 311entry: 312 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrml.l.s(<8 x float> %va) 313 ret <4 x i64> %res 314} 315 316declare <4 x i64> @llvm.loongarch.lasx.xvftintrmh.l.s(<8 x float>) 317 318define <4 x i64> @lasx_xvftintrmh_l_s(<8 x float> %va) nounwind { 319; CHECK-LABEL: lasx_xvftintrmh_l_s: 320; CHECK: # %bb.0: # %entry 321; CHECK-NEXT: xvftintrmh.l.s $xr0, $xr0 322; CHECK-NEXT: ret 323entry: 324 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintrmh.l.s(<8 x float> %va) 325 ret <4 x i64> %res 326} 327 328declare <4 x i64> @llvm.loongarch.lasx.xvftintl.l.s(<8 x float>) 329 330define <4 x i64> @lasx_xvftintl_l_s(<8 x float> %va) nounwind { 331; CHECK-LABEL: lasx_xvftintl_l_s: 332; CHECK: # %bb.0: # %entry 333; CHECK-NEXT: xvftintl.l.s $xr0, $xr0 334; CHECK-NEXT: ret 335entry: 336 %res = call <4 x i64> @llvm.loongarch.lasx.xvftintl.l.s(<8 x float> %va) 337 ret <4 x i64> %res 338} 339 340declare <4 x i64> @llvm.loongarch.lasx.xvftinth.l.s(<8 x float>) 341 342define <4 x i64> @lasx_xvftinth_l_s(<8 x float> %va) nounwind { 343; CHECK-LABEL: lasx_xvftinth_l_s: 344; CHECK: # %bb.0: # %entry 345; CHECK-NEXT: xvftinth.l.s $xr0, $xr0 346; CHECK-NEXT: ret 347entry: 348 %res = call <4 x i64> @llvm.loongarch.lasx.xvftinth.l.s(<8 x float> %va) 349 ret <4 x i64> %res 350} 351