1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --extra_scrub 2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s 3 4; FCEIL 5 6define <vscale x 8 x half> @frintp_nxv8f16(<vscale x 8 x half> %a) { 7; CHECK-LABEL: frintp_nxv8f16: 8; CHECK: // %bb.0: 9; CHECK-NEXT: ptrue p0.h 10; CHECK-NEXT: frintp z0.h, p0/m, z0.h 11; CHECK-NEXT: ret 12 %res = call <vscale x 8 x half> @llvm.ceil.nxv8f16(<vscale x 8 x half> %a) 13 ret <vscale x 8 x half> %res 14} 15 16define <vscale x 4 x half> @frintp_nxv4f16(<vscale x 4 x half> %a) { 17; CHECK-LABEL: frintp_nxv4f16: 18; CHECK: // %bb.0: 19; CHECK-NEXT: ptrue p0.s 20; CHECK-NEXT: frintp z0.h, p0/m, z0.h 21; CHECK-NEXT: ret 22 %res = call <vscale x 4 x half> @llvm.ceil.nxv4f16(<vscale x 4 x half> %a) 23 ret <vscale x 4 x half> %res 24} 25 26define <vscale x 2 x half> @frintp_nxv2f16(<vscale x 2 x half> %a) { 27; CHECK-LABEL: frintp_nxv2f16: 28; CHECK: // %bb.0: 29; CHECK-NEXT: ptrue p0.d 30; CHECK-NEXT: frintp z0.h, p0/m, z0.h 31; CHECK-NEXT: ret 32 %res = call <vscale x 2 x half> @llvm.ceil.nxv2f16(<vscale x 2 x half> %a) 33 ret <vscale x 2 x half> %res 34} 35 36define <vscale x 4 x float> @frintp_nxv4f32(<vscale x 4 x float> %a) { 37; CHECK-LABEL: frintp_nxv4f32: 38; CHECK: // %bb.0: 39; CHECK-NEXT: ptrue p0.s 40; CHECK-NEXT: frintp z0.s, p0/m, z0.s 41; CHECK-NEXT: ret 42 %res = call <vscale x 4 x float> @llvm.ceil.nxv4f32(<vscale x 4 x float> %a) 43 ret <vscale x 4 x float> %res 44} 45 46define <vscale x 2 x float> @frintp_nxv2f32(<vscale x 2 x float> %a) { 47; CHECK-LABEL: frintp_nxv2f32: 48; CHECK: // %bb.0: 49; CHECK-NEXT: ptrue p0.d 50; CHECK-NEXT: frintp z0.s, p0/m, z0.s 51; CHECK-NEXT: ret 52 %res = call <vscale x 2 x float> @llvm.ceil.nxv2f32(<vscale x 2 x float> %a) 53 ret <vscale x 2 x float> %res 54} 55 56define <vscale x 2 x double> @frintp_nxv2f64(<vscale x 2 x double> %a) { 57; CHECK-LABEL: frintp_nxv2f64: 58; CHECK: // %bb.0: 59; CHECK-NEXT: ptrue p0.d 60; CHECK-NEXT: frintp z0.d, p0/m, z0.d 61; CHECK-NEXT: ret 62 %res = call <vscale x 2 x double> @llvm.ceil.nxv2f64(<vscale x 2 x double> %a) 63 ret <vscale x 2 x double> %res 64} 65 66; FFLOOR 67 68define <vscale x 8 x half> @frintm_nxv8f16(<vscale x 8 x half> %a) { 69; CHECK-LABEL: frintm_nxv8f16: 70; CHECK: // %bb.0: 71; CHECK-NEXT: ptrue p0.h 72; CHECK-NEXT: frintm z0.h, p0/m, z0.h 73; CHECK-NEXT: ret 74 %res = call <vscale x 8 x half> @llvm.floor.nxv8f16(<vscale x 8 x half> %a) 75 ret <vscale x 8 x half> %res 76} 77 78define <vscale x 4 x half> @frintm_nxv4f16(<vscale x 4 x half> %a) { 79; CHECK-LABEL: frintm_nxv4f16: 80; CHECK: // %bb.0: 81; CHECK-NEXT: ptrue p0.s 82; CHECK-NEXT: frintm z0.h, p0/m, z0.h 83; CHECK-NEXT: ret 84 %res = call <vscale x 4 x half> @llvm.floor.nxv4f16(<vscale x 4 x half> %a) 85 ret <vscale x 4 x half> %res 86} 87 88define <vscale x 2 x half> @frintm_nxv2f16(<vscale x 2 x half> %a) { 89; CHECK-LABEL: frintm_nxv2f16: 90; CHECK: // %bb.0: 91; CHECK-NEXT: ptrue p0.d 92; CHECK-NEXT: frintm z0.h, p0/m, z0.h 93; CHECK-NEXT: ret 94 %res = call <vscale x 2 x half> @llvm.floor.nxv2f16(<vscale x 2 x half> %a) 95 ret <vscale x 2 x half> %res 96} 97 98define <vscale x 4 x float> @frintm_nxv4f32(<vscale x 4 x float> %a) { 99; CHECK-LABEL: frintm_nxv4f32: 100; CHECK: // %bb.0: 101; CHECK-NEXT: ptrue p0.s 102; CHECK-NEXT: frintm z0.s, p0/m, z0.s 103; CHECK-NEXT: ret 104 %res = call <vscale x 4 x float> @llvm.floor.nxv4f32(<vscale x 4 x float> %a) 105 ret <vscale x 4 x float> %res 106} 107 108define <vscale x 2 x float> @frintm_nxv2f32(<vscale x 2 x float> %a) { 109; CHECK-LABEL: frintm_nxv2f32: 110; CHECK: // %bb.0: 111; CHECK-NEXT: ptrue p0.d 112; CHECK-NEXT: frintm z0.s, p0/m, z0.s 113; CHECK-NEXT: ret 114 %res = call <vscale x 2 x float> @llvm.floor.nxv2f32(<vscale x 2 x float> %a) 115 ret <vscale x 2 x float> %res 116} 117 118define <vscale x 2 x double> @frintm_nxv2f64(<vscale x 2 x double> %a) { 119; CHECK-LABEL: frintm_nxv2f64: 120; CHECK: // %bb.0: 121; CHECK-NEXT: ptrue p0.d 122; CHECK-NEXT: frintm z0.d, p0/m, z0.d 123; CHECK-NEXT: ret 124 %res = call <vscale x 2 x double> @llvm.floor.nxv2f64(<vscale x 2 x double> %a) 125 ret <vscale x 2 x double> %res 126} 127 128; FNEARBYINT 129 130define <vscale x 8 x half> @frinti_nxv8f16(<vscale x 8 x half> %a) { 131; CHECK-LABEL: frinti_nxv8f16: 132; CHECK: // %bb.0: 133; CHECK-NEXT: ptrue p0.h 134; CHECK-NEXT: frinti z0.h, p0/m, z0.h 135; CHECK-NEXT: ret 136 %res = call <vscale x 8 x half> @llvm.nearbyint.nxv8f16(<vscale x 8 x half> %a) 137 ret <vscale x 8 x half> %res 138} 139 140define <vscale x 4 x half> @frinti_nxv4f16(<vscale x 4 x half> %a) { 141; CHECK-LABEL: frinti_nxv4f16: 142; CHECK: // %bb.0: 143; CHECK-NEXT: ptrue p0.s 144; CHECK-NEXT: frinti z0.h, p0/m, z0.h 145; CHECK-NEXT: ret 146 %res = call <vscale x 4 x half> @llvm.nearbyint.nxv4f16(<vscale x 4 x half> %a) 147 ret <vscale x 4 x half> %res 148} 149 150define <vscale x 2 x half> @frinti_nxv2f16(<vscale x 2 x half> %a) { 151; CHECK-LABEL: frinti_nxv2f16: 152; CHECK: // %bb.0: 153; CHECK-NEXT: ptrue p0.d 154; CHECK-NEXT: frinti z0.h, p0/m, z0.h 155; CHECK-NEXT: ret 156 %res = call <vscale x 2 x half> @llvm.nearbyint.nxv2f16(<vscale x 2 x half> %a) 157 ret <vscale x 2 x half> %res 158} 159 160define <vscale x 4 x float> @frinti_nxv4f32(<vscale x 4 x float> %a) { 161; CHECK-LABEL: frinti_nxv4f32: 162; CHECK: // %bb.0: 163; CHECK-NEXT: ptrue p0.s 164; CHECK-NEXT: frinti z0.s, p0/m, z0.s 165; CHECK-NEXT: ret 166 %res = call <vscale x 4 x float> @llvm.nearbyint.nxv4f32(<vscale x 4 x float> %a) 167 ret <vscale x 4 x float> %res 168} 169 170define <vscale x 2 x float> @frinti_nxv2f32(<vscale x 2 x float> %a) { 171; CHECK-LABEL: frinti_nxv2f32: 172; CHECK: // %bb.0: 173; CHECK-NEXT: ptrue p0.d 174; CHECK-NEXT: frinti z0.s, p0/m, z0.s 175; CHECK-NEXT: ret 176 %res = call <vscale x 2 x float> @llvm.nearbyint.nxv2f32(<vscale x 2 x float> %a) 177 ret <vscale x 2 x float> %res 178} 179 180define <vscale x 2 x double> @frinti_nxv2f64(<vscale x 2 x double> %a) { 181; CHECK-LABEL: frinti_nxv2f64: 182; CHECK: // %bb.0: 183; CHECK-NEXT: ptrue p0.d 184; CHECK-NEXT: frinti z0.d, p0/m, z0.d 185; CHECK-NEXT: ret 186 %res = call <vscale x 2 x double> @llvm.nearbyint.nxv2f64(<vscale x 2 x double> %a) 187 ret <vscale x 2 x double> %res 188} 189 190; FRINT 191 192define <vscale x 8 x half> @frintx_nxv8f16(<vscale x 8 x half> %a) { 193; CHECK-LABEL: frintx_nxv8f16: 194; CHECK: // %bb.0: 195; CHECK-NEXT: ptrue p0.h 196; CHECK-NEXT: frintx z0.h, p0/m, z0.h 197; CHECK-NEXT: ret 198 %res = call <vscale x 8 x half> @llvm.rint.nxv8f16(<vscale x 8 x half> %a) 199 ret <vscale x 8 x half> %res 200} 201 202define <vscale x 4 x half> @frintx_nxv4f16(<vscale x 4 x half> %a) { 203; CHECK-LABEL: frintx_nxv4f16: 204; CHECK: // %bb.0: 205; CHECK-NEXT: ptrue p0.s 206; CHECK-NEXT: frintx z0.h, p0/m, z0.h 207; CHECK-NEXT: ret 208 %res = call <vscale x 4 x half> @llvm.rint.nxv4f16(<vscale x 4 x half> %a) 209 ret <vscale x 4 x half> %res 210} 211 212define <vscale x 2 x half> @frintx_nxv2f16(<vscale x 2 x half> %a) { 213; CHECK-LABEL: frintx_nxv2f16: 214; CHECK: // %bb.0: 215; CHECK-NEXT: ptrue p0.d 216; CHECK-NEXT: frintx z0.h, p0/m, z0.h 217; CHECK-NEXT: ret 218 %res = call <vscale x 2 x half> @llvm.rint.nxv2f16(<vscale x 2 x half> %a) 219 ret <vscale x 2 x half> %res 220} 221 222define <vscale x 4 x float> @frintx_nxv4f32(<vscale x 4 x float> %a) { 223; CHECK-LABEL: frintx_nxv4f32: 224; CHECK: // %bb.0: 225; CHECK-NEXT: ptrue p0.s 226; CHECK-NEXT: frintx z0.s, p0/m, z0.s 227; CHECK-NEXT: ret 228 %res = call <vscale x 4 x float> @llvm.rint.nxv4f32(<vscale x 4 x float> %a) 229 ret <vscale x 4 x float> %res 230} 231 232define <vscale x 2 x float> @frintx_nxv2f32(<vscale x 2 x float> %a) { 233; CHECK-LABEL: frintx_nxv2f32: 234; CHECK: // %bb.0: 235; CHECK-NEXT: ptrue p0.d 236; CHECK-NEXT: frintx z0.s, p0/m, z0.s 237; CHECK-NEXT: ret 238 %res = call <vscale x 2 x float> @llvm.rint.nxv2f32(<vscale x 2 x float> %a) 239 ret <vscale x 2 x float> %res 240} 241 242define <vscale x 2 x double> @frintx_nxv2f64(<vscale x 2 x double> %a) { 243; CHECK-LABEL: frintx_nxv2f64: 244; CHECK: // %bb.0: 245; CHECK-NEXT: ptrue p0.d 246; CHECK-NEXT: frintx z0.d, p0/m, z0.d 247; CHECK-NEXT: ret 248 %res = call <vscale x 2 x double> @llvm.rint.nxv2f64(<vscale x 2 x double> %a) 249 ret <vscale x 2 x double> %res 250} 251 252; ROUND 253 254define <vscale x 8 x half> @frinta_nxv8f16(<vscale x 8 x half> %a) { 255; CHECK-LABEL: frinta_nxv8f16: 256; CHECK: // %bb.0: 257; CHECK-NEXT: ptrue p0.h 258; CHECK-NEXT: frinta z0.h, p0/m, z0.h 259; CHECK-NEXT: ret 260 %res = call <vscale x 8 x half> @llvm.round.nxv8f16(<vscale x 8 x half> %a) 261 ret <vscale x 8 x half> %res 262} 263 264define <vscale x 4 x half> @frinta_nxv4f16(<vscale x 4 x half> %a) { 265; CHECK-LABEL: frinta_nxv4f16: 266; CHECK: // %bb.0: 267; CHECK-NEXT: ptrue p0.s 268; CHECK-NEXT: frinta z0.h, p0/m, z0.h 269; CHECK-NEXT: ret 270 %res = call <vscale x 4 x half> @llvm.round.nxv4f16(<vscale x 4 x half> %a) 271 ret <vscale x 4 x half> %res 272} 273 274define <vscale x 2 x half> @frinta_nxv2f16(<vscale x 2 x half> %a) { 275; CHECK-LABEL: frinta_nxv2f16: 276; CHECK: // %bb.0: 277; CHECK-NEXT: ptrue p0.d 278; CHECK-NEXT: frinta z0.h, p0/m, z0.h 279; CHECK-NEXT: ret 280 %res = call <vscale x 2 x half> @llvm.round.nxv2f16(<vscale x 2 x half> %a) 281 ret <vscale x 2 x half> %res 282} 283 284define <vscale x 4 x float> @frinta_nxv4f32(<vscale x 4 x float> %a) { 285; CHECK-LABEL: frinta_nxv4f32: 286; CHECK: // %bb.0: 287; CHECK-NEXT: ptrue p0.s 288; CHECK-NEXT: frinta z0.s, p0/m, z0.s 289; CHECK-NEXT: ret 290 %res = call <vscale x 4 x float> @llvm.round.nxv4f32(<vscale x 4 x float> %a) 291 ret <vscale x 4 x float> %res 292} 293 294define <vscale x 2 x float> @frinta_nxv2f32(<vscale x 2 x float> %a) { 295; CHECK-LABEL: frinta_nxv2f32: 296; CHECK: // %bb.0: 297; CHECK-NEXT: ptrue p0.d 298; CHECK-NEXT: frinta z0.s, p0/m, z0.s 299; CHECK-NEXT: ret 300 %res = call <vscale x 2 x float> @llvm.round.nxv2f32(<vscale x 2 x float> %a) 301 ret <vscale x 2 x float> %res 302} 303 304define <vscale x 2 x double> @frinta_nxv2f64(<vscale x 2 x double> %a) { 305; CHECK-LABEL: frinta_nxv2f64: 306; CHECK: // %bb.0: 307; CHECK-NEXT: ptrue p0.d 308; CHECK-NEXT: frinta z0.d, p0/m, z0.d 309; CHECK-NEXT: ret 310 %res = call <vscale x 2 x double> @llvm.round.nxv2f64(<vscale x 2 x double> %a) 311 ret <vscale x 2 x double> %res 312} 313 314; ROUNDEVEN 315 316define <vscale x 8 x half> @frintn_nxv8f16(<vscale x 8 x half> %a) { 317; CHECK-LABEL: frintn_nxv8f16: 318; CHECK: // %bb.0: 319; CHECK-NEXT: ptrue p0.h 320; CHECK-NEXT: frintn z0.h, p0/m, z0.h 321; CHECK-NEXT: ret 322 %res = call <vscale x 8 x half> @llvm.roundeven.nxv8f16(<vscale x 8 x half> %a) 323 ret <vscale x 8 x half> %res 324} 325 326define <vscale x 4 x half> @frintn_nxv4f16(<vscale x 4 x half> %a) { 327; CHECK-LABEL: frintn_nxv4f16: 328; CHECK: // %bb.0: 329; CHECK-NEXT: ptrue p0.s 330; CHECK-NEXT: frintn z0.h, p0/m, z0.h 331; CHECK-NEXT: ret 332 %res = call <vscale x 4 x half> @llvm.roundeven.nxv4f16(<vscale x 4 x half> %a) 333 ret <vscale x 4 x half> %res 334} 335 336define <vscale x 2 x half> @frintn_nxv2f16(<vscale x 2 x half> %a) { 337; CHECK-LABEL: frintn_nxv2f16: 338; CHECK: // %bb.0: 339; CHECK-NEXT: ptrue p0.d 340; CHECK-NEXT: frintn z0.h, p0/m, z0.h 341; CHECK-NEXT: ret 342 %res = call <vscale x 2 x half> @llvm.roundeven.nxv2f16(<vscale x 2 x half> %a) 343 ret <vscale x 2 x half> %res 344} 345 346define <vscale x 4 x float> @frintn_nxv4f32(<vscale x 4 x float> %a) { 347; CHECK-LABEL: frintn_nxv4f32: 348; CHECK: // %bb.0: 349; CHECK-NEXT: ptrue p0.s 350; CHECK-NEXT: frintn z0.s, p0/m, z0.s 351; CHECK-NEXT: ret 352 %res = call <vscale x 4 x float> @llvm.roundeven.nxv4f32(<vscale x 4 x float> %a) 353 ret <vscale x 4 x float> %res 354} 355 356define <vscale x 2 x float> @frintn_nxv2f32(<vscale x 2 x float> %a) { 357; CHECK-LABEL: frintn_nxv2f32: 358; CHECK: // %bb.0: 359; CHECK-NEXT: ptrue p0.d 360; CHECK-NEXT: frintn z0.s, p0/m, z0.s 361; CHECK-NEXT: ret 362 %res = call <vscale x 2 x float> @llvm.roundeven.nxv2f32(<vscale x 2 x float> %a) 363 ret <vscale x 2 x float> %res 364} 365 366define <vscale x 2 x double> @frintn_nxv2f64(<vscale x 2 x double> %a) { 367; CHECK-LABEL: frintn_nxv2f64: 368; CHECK: // %bb.0: 369; CHECK-NEXT: ptrue p0.d 370; CHECK-NEXT: frintn z0.d, p0/m, z0.d 371; CHECK-NEXT: ret 372 %res = call <vscale x 2 x double> @llvm.roundeven.nxv2f64(<vscale x 2 x double> %a) 373 ret <vscale x 2 x double> %res 374} 375 376; FTRUNC 377 378define <vscale x 8 x half> @frintz_nxv8f16(<vscale x 8 x half> %a) { 379; CHECK-LABEL: frintz_nxv8f16: 380; CHECK: // %bb.0: 381; CHECK-NEXT: ptrue p0.h 382; CHECK-NEXT: frintz z0.h, p0/m, z0.h 383; CHECK-NEXT: ret 384 %res = call <vscale x 8 x half> @llvm.trunc.nxv8f16(<vscale x 8 x half> %a) 385 ret <vscale x 8 x half> %res 386} 387 388define <vscale x 4 x half> @frintz_nxv4f16(<vscale x 4 x half> %a) { 389; CHECK-LABEL: frintz_nxv4f16: 390; CHECK: // %bb.0: 391; CHECK-NEXT: ptrue p0.s 392; CHECK-NEXT: frintz z0.h, p0/m, z0.h 393; CHECK-NEXT: ret 394 %res = call <vscale x 4 x half> @llvm.trunc.nxv4f16(<vscale x 4 x half> %a) 395 ret <vscale x 4 x half> %res 396} 397 398define <vscale x 2 x half> @frintz_nxv2f16(<vscale x 2 x half> %a) { 399; CHECK-LABEL: frintz_nxv2f16: 400; CHECK: // %bb.0: 401; CHECK-NEXT: ptrue p0.d 402; CHECK-NEXT: frintz z0.h, p0/m, z0.h 403; CHECK-NEXT: ret 404 %res = call <vscale x 2 x half> @llvm.trunc.nxv2f16(<vscale x 2 x half> %a) 405 ret <vscale x 2 x half> %res 406} 407 408define <vscale x 4 x float> @frintz_nxv4f32(<vscale x 4 x float> %a) { 409; CHECK-LABEL: frintz_nxv4f32: 410; CHECK: // %bb.0: 411; CHECK-NEXT: ptrue p0.s 412; CHECK-NEXT: frintz z0.s, p0/m, z0.s 413; CHECK-NEXT: ret 414 %res = call <vscale x 4 x float> @llvm.trunc.nxv4f32(<vscale x 4 x float> %a) 415 ret <vscale x 4 x float> %res 416} 417 418define <vscale x 2 x float> @frintz_nxv2f32(<vscale x 2 x float> %a) { 419; CHECK-LABEL: frintz_nxv2f32: 420; CHECK: // %bb.0: 421; CHECK-NEXT: ptrue p0.d 422; CHECK-NEXT: frintz z0.s, p0/m, z0.s 423; CHECK-NEXT: ret 424 %res = call <vscale x 2 x float> @llvm.trunc.nxv2f32(<vscale x 2 x float> %a) 425 ret <vscale x 2 x float> %res 426} 427 428define <vscale x 2 x double> @frintz_nxv2f64(<vscale x 2 x double> %a) { 429; CHECK-LABEL: frintz_nxv2f64: 430; CHECK: // %bb.0: 431; CHECK-NEXT: ptrue p0.d 432; CHECK-NEXT: frintz z0.d, p0/m, z0.d 433; CHECK-NEXT: ret 434 %res = call <vscale x 2 x double> @llvm.trunc.nxv2f64(<vscale x 2 x double> %a) 435 ret <vscale x 2 x double> %res 436} 437 438declare <vscale x 8 x half> @llvm.ceil.nxv8f16( <vscale x 8 x half>) 439declare <vscale x 4 x half> @llvm.ceil.nxv4f16( <vscale x 4 x half>) 440declare <vscale x 2 x half> @llvm.ceil.nxv2f16( <vscale x 2 x half>) 441declare <vscale x 4 x float> @llvm.ceil.nxv4f32(<vscale x 4 x float>) 442declare <vscale x 2 x float> @llvm.ceil.nxv2f32(<vscale x 2 x float>) 443declare <vscale x 2 x double> @llvm.ceil.nxv2f64(<vscale x 2 x double>) 444 445declare <vscale x 8 x half> @llvm.floor.nxv8f16( <vscale x 8 x half>) 446declare <vscale x 4 x half> @llvm.floor.nxv4f16( <vscale x 4 x half>) 447declare <vscale x 2 x half> @llvm.floor.nxv2f16( <vscale x 2 x half>) 448declare <vscale x 4 x float> @llvm.floor.nxv4f32(<vscale x 4 x float>) 449declare <vscale x 2 x float> @llvm.floor.nxv2f32(<vscale x 2 x float>) 450declare <vscale x 2 x double> @llvm.floor.nxv2f64(<vscale x 2 x double>) 451 452declare <vscale x 8 x half> @llvm.nearbyint.nxv8f16( <vscale x 8 x half>) 453declare <vscale x 4 x half> @llvm.nearbyint.nxv4f16( <vscale x 4 x half>) 454declare <vscale x 2 x half> @llvm.nearbyint.nxv2f16( <vscale x 2 x half>) 455declare <vscale x 4 x float> @llvm.nearbyint.nxv4f32(<vscale x 4 x float>) 456declare <vscale x 2 x float> @llvm.nearbyint.nxv2f32(<vscale x 2 x float>) 457declare <vscale x 2 x double> @llvm.nearbyint.nxv2f64(<vscale x 2 x double>) 458 459declare <vscale x 8 x half> @llvm.rint.nxv8f16( <vscale x 8 x half>) 460declare <vscale x 4 x half> @llvm.rint.nxv4f16( <vscale x 4 x half>) 461declare <vscale x 2 x half> @llvm.rint.nxv2f16( <vscale x 2 x half>) 462declare <vscale x 4 x float> @llvm.rint.nxv4f32(<vscale x 4 x float>) 463declare <vscale x 2 x float> @llvm.rint.nxv2f32(<vscale x 2 x float>) 464declare <vscale x 2 x double> @llvm.rint.nxv2f64(<vscale x 2 x double>) 465 466declare <vscale x 8 x half> @llvm.round.nxv8f16( <vscale x 8 x half>) 467declare <vscale x 4 x half> @llvm.round.nxv4f16( <vscale x 4 x half>) 468declare <vscale x 2 x half> @llvm.round.nxv2f16( <vscale x 2 x half>) 469declare <vscale x 4 x float> @llvm.round.nxv4f32(<vscale x 4 x float>) 470declare <vscale x 2 x float> @llvm.round.nxv2f32(<vscale x 2 x float>) 471declare <vscale x 2 x double> @llvm.round.nxv2f64(<vscale x 2 x double>) 472 473declare <vscale x 8 x half> @llvm.roundeven.nxv8f16( <vscale x 8 x half>) 474declare <vscale x 4 x half> @llvm.roundeven.nxv4f16( <vscale x 4 x half>) 475declare <vscale x 2 x half> @llvm.roundeven.nxv2f16( <vscale x 2 x half>) 476declare <vscale x 4 x float> @llvm.roundeven.nxv4f32(<vscale x 4 x float>) 477declare <vscale x 2 x float> @llvm.roundeven.nxv2f32(<vscale x 2 x float>) 478declare <vscale x 2 x double> @llvm.roundeven.nxv2f64(<vscale x 2 x double>) 479 480declare <vscale x 8 x half> @llvm.trunc.nxv8f16( <vscale x 8 x half>) 481declare <vscale x 4 x half> @llvm.trunc.nxv4f16( <vscale x 4 x half>) 482declare <vscale x 2 x half> @llvm.trunc.nxv2f16( <vscale x 2 x half>) 483declare <vscale x 4 x float> @llvm.trunc.nxv4f32(<vscale x 4 x float>) 484declare <vscale x 2 x float> @llvm.trunc.nxv2f32(<vscale x 2 x float>) 485declare <vscale x 2 x double> @llvm.trunc.nxv2f64(<vscale x 2 x double>) 486