486 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --extra_scrub2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s3 4; FCEIL5 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.h10; CHECK-NEXT: frintp z0.h, p0/m, z0.h11; CHECK-NEXT: ret12 %res = call <vscale x 8 x half> @llvm.ceil.nxv8f16(<vscale x 8 x half> %a)13 ret <vscale x 8 x half> %res14}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.s20; CHECK-NEXT: frintp z0.h, p0/m, z0.h21; CHECK-NEXT: ret22 %res = call <vscale x 4 x half> @llvm.ceil.nxv4f16(<vscale x 4 x half> %a)23 ret <vscale x 4 x half> %res24}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.d30; CHECK-NEXT: frintp z0.h, p0/m, z0.h31; CHECK-NEXT: ret32 %res = call <vscale x 2 x half> @llvm.ceil.nxv2f16(<vscale x 2 x half> %a)33 ret <vscale x 2 x half> %res34}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.s40; CHECK-NEXT: frintp z0.s, p0/m, z0.s41; CHECK-NEXT: ret42 %res = call <vscale x 4 x float> @llvm.ceil.nxv4f32(<vscale x 4 x float> %a)43 ret <vscale x 4 x float> %res44}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.d50; CHECK-NEXT: frintp z0.s, p0/m, z0.s51; CHECK-NEXT: ret52 %res = call <vscale x 2 x float> @llvm.ceil.nxv2f32(<vscale x 2 x float> %a)53 ret <vscale x 2 x float> %res54}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.d60; CHECK-NEXT: frintp z0.d, p0/m, z0.d61; CHECK-NEXT: ret62 %res = call <vscale x 2 x double> @llvm.ceil.nxv2f64(<vscale x 2 x double> %a)63 ret <vscale x 2 x double> %res64}65 66; FFLOOR67 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.h72; CHECK-NEXT: frintm z0.h, p0/m, z0.h73; CHECK-NEXT: ret74 %res = call <vscale x 8 x half> @llvm.floor.nxv8f16(<vscale x 8 x half> %a)75 ret <vscale x 8 x half> %res76}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.s82; CHECK-NEXT: frintm z0.h, p0/m, z0.h83; CHECK-NEXT: ret84 %res = call <vscale x 4 x half> @llvm.floor.nxv4f16(<vscale x 4 x half> %a)85 ret <vscale x 4 x half> %res86}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.d92; CHECK-NEXT: frintm z0.h, p0/m, z0.h93; CHECK-NEXT: ret94 %res = call <vscale x 2 x half> @llvm.floor.nxv2f16(<vscale x 2 x half> %a)95 ret <vscale x 2 x half> %res96}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.s102; CHECK-NEXT: frintm z0.s, p0/m, z0.s103; CHECK-NEXT: ret104 %res = call <vscale x 4 x float> @llvm.floor.nxv4f32(<vscale x 4 x float> %a)105 ret <vscale x 4 x float> %res106}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.d112; CHECK-NEXT: frintm z0.s, p0/m, z0.s113; CHECK-NEXT: ret114 %res = call <vscale x 2 x float> @llvm.floor.nxv2f32(<vscale x 2 x float> %a)115 ret <vscale x 2 x float> %res116}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.d122; CHECK-NEXT: frintm z0.d, p0/m, z0.d123; CHECK-NEXT: ret124 %res = call <vscale x 2 x double> @llvm.floor.nxv2f64(<vscale x 2 x double> %a)125 ret <vscale x 2 x double> %res126}127 128; FNEARBYINT129 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.h134; CHECK-NEXT: frinti z0.h, p0/m, z0.h135; CHECK-NEXT: ret136 %res = call <vscale x 8 x half> @llvm.nearbyint.nxv8f16(<vscale x 8 x half> %a)137 ret <vscale x 8 x half> %res138}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.s144; CHECK-NEXT: frinti z0.h, p0/m, z0.h145; CHECK-NEXT: ret146 %res = call <vscale x 4 x half> @llvm.nearbyint.nxv4f16(<vscale x 4 x half> %a)147 ret <vscale x 4 x half> %res148}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.d154; CHECK-NEXT: frinti z0.h, p0/m, z0.h155; CHECK-NEXT: ret156 %res = call <vscale x 2 x half> @llvm.nearbyint.nxv2f16(<vscale x 2 x half> %a)157 ret <vscale x 2 x half> %res158}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.s164; CHECK-NEXT: frinti z0.s, p0/m, z0.s165; CHECK-NEXT: ret166 %res = call <vscale x 4 x float> @llvm.nearbyint.nxv4f32(<vscale x 4 x float> %a)167 ret <vscale x 4 x float> %res168}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.d174; CHECK-NEXT: frinti z0.s, p0/m, z0.s175; CHECK-NEXT: ret176 %res = call <vscale x 2 x float> @llvm.nearbyint.nxv2f32(<vscale x 2 x float> %a)177 ret <vscale x 2 x float> %res178}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.d184; CHECK-NEXT: frinti z0.d, p0/m, z0.d185; CHECK-NEXT: ret186 %res = call <vscale x 2 x double> @llvm.nearbyint.nxv2f64(<vscale x 2 x double> %a)187 ret <vscale x 2 x double> %res188}189 190; FRINT191 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.h196; CHECK-NEXT: frintx z0.h, p0/m, z0.h197; CHECK-NEXT: ret198 %res = call <vscale x 8 x half> @llvm.rint.nxv8f16(<vscale x 8 x half> %a)199 ret <vscale x 8 x half> %res200}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.s206; CHECK-NEXT: frintx z0.h, p0/m, z0.h207; CHECK-NEXT: ret208 %res = call <vscale x 4 x half> @llvm.rint.nxv4f16(<vscale x 4 x half> %a)209 ret <vscale x 4 x half> %res210}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.d216; CHECK-NEXT: frintx z0.h, p0/m, z0.h217; CHECK-NEXT: ret218 %res = call <vscale x 2 x half> @llvm.rint.nxv2f16(<vscale x 2 x half> %a)219 ret <vscale x 2 x half> %res220}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.s226; CHECK-NEXT: frintx z0.s, p0/m, z0.s227; CHECK-NEXT: ret228 %res = call <vscale x 4 x float> @llvm.rint.nxv4f32(<vscale x 4 x float> %a)229 ret <vscale x 4 x float> %res230}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.d236; CHECK-NEXT: frintx z0.s, p0/m, z0.s237; CHECK-NEXT: ret238 %res = call <vscale x 2 x float> @llvm.rint.nxv2f32(<vscale x 2 x float> %a)239 ret <vscale x 2 x float> %res240}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.d246; CHECK-NEXT: frintx z0.d, p0/m, z0.d247; CHECK-NEXT: ret248 %res = call <vscale x 2 x double> @llvm.rint.nxv2f64(<vscale x 2 x double> %a)249 ret <vscale x 2 x double> %res250}251 252; ROUND253 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.h258; CHECK-NEXT: frinta z0.h, p0/m, z0.h259; CHECK-NEXT: ret260 %res = call <vscale x 8 x half> @llvm.round.nxv8f16(<vscale x 8 x half> %a)261 ret <vscale x 8 x half> %res262}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.s268; CHECK-NEXT: frinta z0.h, p0/m, z0.h269; CHECK-NEXT: ret270 %res = call <vscale x 4 x half> @llvm.round.nxv4f16(<vscale x 4 x half> %a)271 ret <vscale x 4 x half> %res272}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.d278; CHECK-NEXT: frinta z0.h, p0/m, z0.h279; CHECK-NEXT: ret280 %res = call <vscale x 2 x half> @llvm.round.nxv2f16(<vscale x 2 x half> %a)281 ret <vscale x 2 x half> %res282}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.s288; CHECK-NEXT: frinta z0.s, p0/m, z0.s289; CHECK-NEXT: ret290 %res = call <vscale x 4 x float> @llvm.round.nxv4f32(<vscale x 4 x float> %a)291 ret <vscale x 4 x float> %res292}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.d298; CHECK-NEXT: frinta z0.s, p0/m, z0.s299; CHECK-NEXT: ret300 %res = call <vscale x 2 x float> @llvm.round.nxv2f32(<vscale x 2 x float> %a)301 ret <vscale x 2 x float> %res302}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.d308; CHECK-NEXT: frinta z0.d, p0/m, z0.d309; CHECK-NEXT: ret310 %res = call <vscale x 2 x double> @llvm.round.nxv2f64(<vscale x 2 x double> %a)311 ret <vscale x 2 x double> %res312}313 314; ROUNDEVEN315 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.h320; CHECK-NEXT: frintn z0.h, p0/m, z0.h321; CHECK-NEXT: ret322 %res = call <vscale x 8 x half> @llvm.roundeven.nxv8f16(<vscale x 8 x half> %a)323 ret <vscale x 8 x half> %res324}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.s330; CHECK-NEXT: frintn z0.h, p0/m, z0.h331; CHECK-NEXT: ret332 %res = call <vscale x 4 x half> @llvm.roundeven.nxv4f16(<vscale x 4 x half> %a)333 ret <vscale x 4 x half> %res334}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.d340; CHECK-NEXT: frintn z0.h, p0/m, z0.h341; CHECK-NEXT: ret342 %res = call <vscale x 2 x half> @llvm.roundeven.nxv2f16(<vscale x 2 x half> %a)343 ret <vscale x 2 x half> %res344}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.s350; CHECK-NEXT: frintn z0.s, p0/m, z0.s351; CHECK-NEXT: ret352 %res = call <vscale x 4 x float> @llvm.roundeven.nxv4f32(<vscale x 4 x float> %a)353 ret <vscale x 4 x float> %res354}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.d360; CHECK-NEXT: frintn z0.s, p0/m, z0.s361; CHECK-NEXT: ret362 %res = call <vscale x 2 x float> @llvm.roundeven.nxv2f32(<vscale x 2 x float> %a)363 ret <vscale x 2 x float> %res364}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.d370; CHECK-NEXT: frintn z0.d, p0/m, z0.d371; CHECK-NEXT: ret372 %res = call <vscale x 2 x double> @llvm.roundeven.nxv2f64(<vscale x 2 x double> %a)373 ret <vscale x 2 x double> %res374}375 376; FTRUNC377 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.h382; CHECK-NEXT: frintz z0.h, p0/m, z0.h383; CHECK-NEXT: ret384 %res = call <vscale x 8 x half> @llvm.trunc.nxv8f16(<vscale x 8 x half> %a)385 ret <vscale x 8 x half> %res386}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.s392; CHECK-NEXT: frintz z0.h, p0/m, z0.h393; CHECK-NEXT: ret394 %res = call <vscale x 4 x half> @llvm.trunc.nxv4f16(<vscale x 4 x half> %a)395 ret <vscale x 4 x half> %res396}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.d402; CHECK-NEXT: frintz z0.h, p0/m, z0.h403; CHECK-NEXT: ret404 %res = call <vscale x 2 x half> @llvm.trunc.nxv2f16(<vscale x 2 x half> %a)405 ret <vscale x 2 x half> %res406}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.s412; CHECK-NEXT: frintz z0.s, p0/m, z0.s413; CHECK-NEXT: ret414 %res = call <vscale x 4 x float> @llvm.trunc.nxv4f32(<vscale x 4 x float> %a)415 ret <vscale x 4 x float> %res416}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.d422; CHECK-NEXT: frintz z0.s, p0/m, z0.s423; CHECK-NEXT: ret424 %res = call <vscale x 2 x float> @llvm.trunc.nxv2f32(<vscale x 2 x float> %a)425 ret <vscale x 2 x float> %res426}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.d432; CHECK-NEXT: frintz z0.d, p0/m, z0.d433; CHECK-NEXT: ret434 %res = call <vscale x 2 x double> @llvm.trunc.nxv2f64(<vscale x 2 x double> %a)435 ret <vscale x 2 x double> %res436}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