brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.7 KiB · db7a3fa Raw
667 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64 -mattr=+sve2p1 < %s | FileCheck %s3; RUN: llc -mtriple=aarch64 -mattr=+sve,+sme2 < %s | FileCheck %s4; RUN: llc -mtriple=aarch64 -mattr=+sme2p1 -force-streaming < %s | FileCheck %s5; RUN: llc -mtriple=aarch64 -mattr=+sme,+sve2p1 -force-streaming < %s | FileCheck %s6 7; == WHILEGE ==8 9define <vscale x 16 x i1> @whilege_x2_nxv16i1(i64 %m, i64 %n) nounwind {10; CHECK-LABEL: whilege_x2_nxv16i1:11; CHECK:       // %bb.0:12; CHECK-NEXT:    whilege { p0.b, p1.b }, x0, x113; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p114; CHECK-NEXT:    ret15  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilege.x2.nxv16i1(i64 %m, i64 %n)16  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 017  ret <vscale x 16 x i1> %res18}19 20define <vscale x 8 x i1> @whilege_x2_nxv8i1(i64 %m, i64 %n) nounwind {21; CHECK-LABEL: whilege_x2_nxv8i1:22; CHECK:       // %bb.0:23; CHECK-NEXT:    whilege { p0.h, p1.h }, x0, x124; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p125; CHECK-NEXT:    ret26  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilege.x2.nxv8i1(i64 %m, i64 %n)27  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 028  ret <vscale x 8 x i1> %res29}30 31define <vscale x 4 x i1> @whilege_x2_nxv4i1(i64 %m, i64 %n) nounwind {32; CHECK-LABEL: whilege_x2_nxv4i1:33; CHECK:       // %bb.0:34; CHECK-NEXT:    whilege { p0.s, p1.s }, x0, x135; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p136; CHECK-NEXT:    ret37  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilege.x2.nxv4i1(i64 %m, i64 %n)38  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 039  ret <vscale x 4 x i1> %res40}41 42define <vscale x 2 x i1> @whilege_x2_nxv2i1(i64 %m, i64 %n) nounwind {43; CHECK-LABEL: whilege_x2_nxv2i1:44; CHECK:       // %bb.0:45; CHECK-NEXT:    whilege { p0.d, p1.d }, x0, x146; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p147; CHECK-NEXT:    ret48  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilege.x2.nxv2i1(i64 %m, i64 %n)49  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 050  ret <vscale x 2 x i1> %res51}52 53 54; == WHILEGT ==55 56define <vscale x 16 x i1> @whilegt_x2_nxv16i1(i64 %m, i64 %n) nounwind {57; CHECK-LABEL: whilegt_x2_nxv16i1:58; CHECK:       // %bb.0:59; CHECK-NEXT:    whilegt { p0.b, p1.b }, x0, x160; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p161; CHECK-NEXT:    ret62  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv16i1(i64 %m, i64 %n)63  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 064  ret <vscale x 16 x i1> %res65}66 67define <vscale x 8 x i1> @whilegt_x2_nxv8i1(i64 %m, i64 %n) nounwind {68; CHECK-LABEL: whilegt_x2_nxv8i1:69; CHECK:       // %bb.0:70; CHECK-NEXT:    whilegt { p0.h, p1.h }, x0, x171; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p172; CHECK-NEXT:    ret73  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv8i1(i64 %m, i64 %n)74  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 075  ret <vscale x 8 x i1> %res76}77 78define <vscale x 4 x i1> @whilegt_x2_nxv4i1(i64 %m, i64 %n) nounwind {79; CHECK-LABEL: whilegt_x2_nxv4i1:80; CHECK:       // %bb.0:81; CHECK-NEXT:    whilegt { p0.s, p1.s }, x0, x182; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p183; CHECK-NEXT:    ret84  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv4i1(i64 %m, i64 %n)85  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 086  ret <vscale x 4 x i1> %res87}88 89define <vscale x 2 x i1> @whilegt_x2_nxv2i1(i64 %m, i64 %n) nounwind {90; CHECK-LABEL: whilegt_x2_nxv2i1:91; CHECK:       // %bb.0:92; CHECK-NEXT:    whilegt { p0.d, p1.d }, x0, x193; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p194; CHECK-NEXT:    ret95  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv2i1(i64 %m, i64 %n)96  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 097  ret <vscale x 2 x i1> %res98}99 100 101; == WHILEHI ==102 103define <vscale x 16 x i1> @whilehi_x2_nxv16i1(i64 %m, i64 %n) nounwind {104; CHECK-LABEL: whilehi_x2_nxv16i1:105; CHECK:       // %bb.0:106; CHECK-NEXT:    whilehi { p0.b, p1.b }, x0, x1107; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1108; CHECK-NEXT:    ret109  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv16i1(i64 %m, i64 %n)110  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0111  ret <vscale x 16 x i1> %res112}113 114define <vscale x 8 x i1> @whilehi_x2_nxv8i1(i64 %m, i64 %n) nounwind {115; CHECK-LABEL: whilehi_x2_nxv8i1:116; CHECK:       // %bb.0:117; CHECK-NEXT:    whilehi { p0.h, p1.h }, x0, x1118; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1119; CHECK-NEXT:    ret120  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv8i1(i64 %m, i64 %n)121  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0122  ret <vscale x 8 x i1> %res123}124 125define <vscale x 4 x i1> @whilehi_x2_nxv4i1(i64 %m, i64 %n) nounwind {126; CHECK-LABEL: whilehi_x2_nxv4i1:127; CHECK:       // %bb.0:128; CHECK-NEXT:    whilehi { p0.s, p1.s }, x0, x1129; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1130; CHECK-NEXT:    ret131  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv4i1(i64 %m, i64 %n)132  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0133  ret <vscale x 4 x i1> %res134}135 136define <vscale x 2 x i1> @whilehi_x2_nxv2i1(i64 %m, i64 %n) nounwind {137; CHECK-LABEL: whilehi_x2_nxv2i1:138; CHECK:       // %bb.0:139; CHECK-NEXT:    whilehi { p0.d, p1.d }, x0, x1140; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1141; CHECK-NEXT:    ret142  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv2i1(i64 %m, i64 %n)143  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0144  ret <vscale x 2 x i1> %res145}146 147 148; == WHILEHS ==149 150define <vscale x 16 x i1> @whilehs_x2_nxv16i1(i64 %m, i64 %n) nounwind {151; CHECK-LABEL: whilehs_x2_nxv16i1:152; CHECK:       // %bb.0:153; CHECK-NEXT:    whilehs { p0.b, p1.b }, x0, x1154; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1155; CHECK-NEXT:    ret156  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv16i1(i64 %m, i64 %n)157  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0158  ret <vscale x 16 x i1> %res159}160 161define <vscale x 8 x i1> @whilehs_x2_nxv8i1(i64 %m, i64 %n) nounwind {162; CHECK-LABEL: whilehs_x2_nxv8i1:163; CHECK:       // %bb.0:164; CHECK-NEXT:    whilehs { p0.h, p1.h }, x0, x1165; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1166; CHECK-NEXT:    ret167  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv8i1(i64 %m, i64 %n)168  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0169  ret <vscale x 8 x i1> %res170}171 172define <vscale x 4 x i1> @whilehs_x2_nxv4i1(i64 %m, i64 %n) nounwind {173; CHECK-LABEL: whilehs_x2_nxv4i1:174; CHECK:       // %bb.0:175; CHECK-NEXT:    whilehs { p0.s, p1.s }, x0, x1176; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1177; CHECK-NEXT:    ret178  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv4i1(i64 %m, i64 %n)179  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0180  ret <vscale x 4 x i1> %res181}182 183define <vscale x 2 x i1> @whilehs_x2_nxv2i1(i64 %m, i64 %n) nounwind {184; CHECK-LABEL: whilehs_x2_nxv2i1:185; CHECK:       // %bb.0:186; CHECK-NEXT:    whilehs { p0.d, p1.d }, x0, x1187; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1188; CHECK-NEXT:    ret189  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv2i1(i64 %m, i64 %n)190  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0191  ret <vscale x 2 x i1> %res192}193 194 195; == WHILELE ==196 197define <vscale x 16 x i1> @whilele_x2_nxv16i1(i64 %m, i64 %n) nounwind {198; CHECK-LABEL: whilele_x2_nxv16i1:199; CHECK:       // %bb.0:200; CHECK-NEXT:    whilele { p0.b, p1.b }, x0, x1201; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1202; CHECK-NEXT:    ret203  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilele.x2.nxv16i1(i64 %m, i64 %n)204  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0205  ret <vscale x 16 x i1> %res206}207 208define <vscale x 8 x i1> @whilele_x2_nxv8i1(i64 %m, i64 %n) nounwind {209; CHECK-LABEL: whilele_x2_nxv8i1:210; CHECK:       // %bb.0:211; CHECK-NEXT:    whilele { p0.h, p1.h }, x0, x1212; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1213; CHECK-NEXT:    ret214  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilele.x2.nxv8i1(i64 %m, i64 %n)215  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0216  ret <vscale x 8 x i1> %res217}218 219define <vscale x 4 x i1> @whilele_x2_nxv4i1(i64 %m, i64 %n) nounwind {220; CHECK-LABEL: whilele_x2_nxv4i1:221; CHECK:       // %bb.0:222; CHECK-NEXT:    whilele { p0.s, p1.s }, x0, x1223; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1224; CHECK-NEXT:    ret225  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilele.x2.nxv4i1(i64 %m, i64 %n)226  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0227  ret <vscale x 4 x i1> %res228}229 230define <vscale x 2 x i1> @whilele_x2_nxv2i1(i64 %m, i64 %n) nounwind {231; CHECK-LABEL: whilele_x2_nxv2i1:232; CHECK:       // %bb.0:233; CHECK-NEXT:    whilele { p0.d, p1.d }, x0, x1234; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1235; CHECK-NEXT:    ret236  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilele.x2.nxv2i1(i64 %m, i64 %n)237  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0238  ret <vscale x 2 x i1> %res239}240 241 242; == WHILELO ==243 244define <vscale x 16 x i1> @whilelo_x2_nxv16i1(i64 %m, i64 %n) nounwind {245; CHECK-LABEL: whilelo_x2_nxv16i1:246; CHECK:       // %bb.0:247; CHECK-NEXT:    whilelo { p0.b, p1.b }, x0, x1248; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1249; CHECK-NEXT:    ret250  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv16i1(i64 %m, i64 %n)251  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0252  ret <vscale x 16 x i1> %res253}254 255define <vscale x 8 x i1> @whilelo_x2_nxv8i1(i64 %m, i64 %n) nounwind {256; CHECK-LABEL: whilelo_x2_nxv8i1:257; CHECK:       // %bb.0:258; CHECK-NEXT:    whilelo { p0.h, p1.h }, x0, x1259; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1260; CHECK-NEXT:    ret261  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv8i1(i64 %m, i64 %n)262  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0263  ret <vscale x 8 x i1> %res264}265 266define <vscale x 4 x i1> @whilelo_x2_nxv4i1(i64 %m, i64 %n) nounwind {267; CHECK-LABEL: whilelo_x2_nxv4i1:268; CHECK:       // %bb.0:269; CHECK-NEXT:    whilelo { p0.s, p1.s }, x0, x1270; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1271; CHECK-NEXT:    ret272  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv4i1(i64 %m, i64 %n)273  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0274  ret <vscale x 4 x i1> %res275}276 277define <vscale x 2 x i1> @whilelo_x2_nxv2i1(i64 %m, i64 %n) nounwind {278; CHECK-LABEL: whilelo_x2_nxv2i1:279; CHECK:       // %bb.0:280; CHECK-NEXT:    whilelo { p0.d, p1.d }, x0, x1281; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1282; CHECK-NEXT:    ret283  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv2i1(i64 %m, i64 %n)284  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0285  ret <vscale x 2 x i1> %res286}287 288 289; == WHILELS ==290 291define <vscale x 16 x i1> @whilels_x2_nxv16i1(i64 %m, i64 %n) nounwind {292; CHECK-LABEL: whilels_x2_nxv16i1:293; CHECK:       // %bb.0:294; CHECK-NEXT:    whilels { p0.b, p1.b }, x0, x1295; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1296; CHECK-NEXT:    ret297  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilels.x2.nxv16i1(i64 %m, i64 %n)298  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0299  ret <vscale x 16 x i1> %res300}301 302define <vscale x 8 x i1> @whilels_x2_nxv8i1(i64 %m, i64 %n) nounwind {303; CHECK-LABEL: whilels_x2_nxv8i1:304; CHECK:       // %bb.0:305; CHECK-NEXT:    whilels { p0.h, p1.h }, x0, x1306; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1307; CHECK-NEXT:    ret308  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilels.x2.nxv8i1(i64 %m, i64 %n)309  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0310  ret <vscale x 8 x i1> %res311}312 313define <vscale x 4 x i1> @whilels_x2_nxv4i1(i64 %m, i64 %n) nounwind {314; CHECK-LABEL: whilels_x2_nxv4i1:315; CHECK:       // %bb.0:316; CHECK-NEXT:    whilels { p0.s, p1.s }, x0, x1317; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1318; CHECK-NEXT:    ret319  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilels.x2.nxv4i1(i64 %m, i64 %n)320  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0321  ret <vscale x 4 x i1> %res322}323 324define <vscale x 2 x i1> @whilels_x2_nxv2i1(i64 %m, i64 %n) nounwind {325; CHECK-LABEL: whilels_x2_nxv2i1:326; CHECK:       // %bb.0:327; CHECK-NEXT:    whilels { p0.d, p1.d }, x0, x1328; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1329; CHECK-NEXT:    ret330  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilels.x2.nxv2i1(i64 %m, i64 %n)331  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0332  ret <vscale x 2 x i1> %res333}334 335 336; == WHILELT ==337 338define <vscale x 16 x i1> @whilelt_x2_nxv16i1(i64 %m, i64 %n) nounwind {339; CHECK-LABEL: whilelt_x2_nxv16i1:340; CHECK:       // %bb.0:341; CHECK-NEXT:    whilelt { p0.b, p1.b }, x0, x1342; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1343; CHECK-NEXT:    ret344  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv16i1(i64 %m, i64 %n)345  %res = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0346  ret <vscale x 16 x i1> %res347}348 349define <vscale x 8 x i1> @whilelt_x2_nxv8i1(i64 %m, i64 %n) nounwind {350; CHECK-LABEL: whilelt_x2_nxv8i1:351; CHECK:       // %bb.0:352; CHECK-NEXT:    whilelt { p0.h, p1.h }, x0, x1353; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1354; CHECK-NEXT:    ret355  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv8i1(i64 %m, i64 %n)356  %res = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0357  ret <vscale x 8 x i1> %res358}359 360define <vscale x 4 x i1> @whilelt_x2_nxv4i1(i64 %m, i64 %n) nounwind {361; CHECK-LABEL: whilelt_x2_nxv4i1:362; CHECK:       // %bb.0:363; CHECK-NEXT:    whilelt { p0.s, p1.s }, x0, x1364; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1365; CHECK-NEXT:    ret366  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv4i1(i64 %m, i64 %n)367  %res = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0368  ret <vscale x 4 x i1> %res369}370 371define <vscale x 2 x i1> @whilelt_x2_nxv2i1(i64 %m, i64 %n) nounwind {372; CHECK-LABEL: whilelt_x2_nxv2i1:373; CHECK:       // %bb.0:374; CHECK-NEXT:    whilelt { p0.d, p1.d }, x0, x1375; CHECK-NEXT:    // kill: def $p0 killed $p0 killed $p0_p1376; CHECK-NEXT:    ret377  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv2i1(i64 %m, i64 %n)378  %res = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0379  ret <vscale x 2 x i1> %res380}381 382 383; Test that we get good code quality when using while in combination with other intrinsics384 385define <vscale x 32 x i1> @codegen_whilege_b16_x2(i64 noundef %op1, i64 noundef %op2) nounwind {386; CHECK-LABEL: codegen_whilege_b16_x2:387; CHECK:       // %bb.0: // %entry388; CHECK-NEXT:    whilege { p0.h, p1.h }, x0, x1389; CHECK-NEXT:    ret390entry:391  %0 = tail call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilege.x2.nxv8i1(i64 %op1, i64 %op2)392  %1 = extractvalue { <vscale x 8 x i1>, <vscale x 8 x i1> } %0, 0393  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %1)394  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)395  %4 = extractvalue { <vscale x 8 x i1>, <vscale x 8 x i1> } %0, 1396  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %4)397  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)398  ret <vscale x 32 x i1> %6399}400 401define <vscale x 32 x i1> @codegen_whilegt_b32_x2(i64 noundef %op1, i64 noundef %op2) nounwind {402; CHECK-LABEL: codegen_whilegt_b32_x2:403; CHECK:       // %bb.0: // %entry404; CHECK-NEXT:    whilegt { p0.s, p1.s }, x0, x1405; CHECK-NEXT:    ret406entry:407  %0 = tail call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv4i1(i64 %op1, i64 %op2)408  %1 = extractvalue { <vscale x 4 x i1>, <vscale x 4 x i1> } %0, 0409  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %1)410  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)411  %4 = extractvalue { <vscale x 4 x i1>, <vscale x 4 x i1> } %0, 1412  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %4)413  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)414  ret <vscale x 32 x i1> %6415}416 417define <vscale x 32 x i1> @codegen_whilehi_b64_x2(i64 noundef %op1, i64 noundef %op2) nounwind {418; CHECK-LABEL: codegen_whilehi_b64_x2:419; CHECK:       // %bb.0: // %entry420; CHECK-NEXT:    whilehi { p0.d, p1.d }, x0, x1421; CHECK-NEXT:    ret422entry:423  %0 = tail call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv2i1(i64 %op1, i64 %op2)424  %1 = extractvalue { <vscale x 2 x i1>, <vscale x 2 x i1> } %0, 0425  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> %1)426  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)427  %4 = extractvalue { <vscale x 2 x i1>, <vscale x 2 x i1> } %0, 1428  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> %4)429  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)430  ret <vscale x 32 x i1> %6431}432 433define <vscale x 32 x i1> @codegen_whilehs_b16_x2(i64 noundef %op1, i64 noundef %op2) nounwind {434; CHECK-LABEL: codegen_whilehs_b16_x2:435; CHECK:       // %bb.0: // %entry436; CHECK-NEXT:    whilehs { p0.h, p1.h }, x0, x1437; CHECK-NEXT:    ret438entry:439  %0 = tail call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv8i1(i64 %op1, i64 %op2)440  %1 = extractvalue { <vscale x 8 x i1>, <vscale x 8 x i1> } %0, 0441  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %1)442  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)443  %4 = extractvalue { <vscale x 8 x i1>, <vscale x 8 x i1> } %0, 1444  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %4)445  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)446  ret <vscale x 32 x i1> %6447}448 449define <vscale x 32 x i1> @codegen_whilele_b32_x2(i64 noundef %op1, i64 noundef %op2) nounwind {450; CHECK-LABEL: codegen_whilele_b32_x2:451; CHECK:       // %bb.0: // %entry452; CHECK-NEXT:    whilele { p0.s, p1.s }, x0, x1453; CHECK-NEXT:    ret454entry:455  %0 = tail call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilele.x2.nxv4i1(i64 %op1, i64 %op2)456  %1 = extractvalue { <vscale x 4 x i1>, <vscale x 4 x i1> } %0, 0457  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %1)458  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)459  %4 = extractvalue { <vscale x 4 x i1>, <vscale x 4 x i1> } %0, 1460  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %4)461  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)462  ret <vscale x 32 x i1> %6463}464 465define <vscale x 32 x i1> @codegen_whilelo_b64_x2(i64 noundef %op1, i64 noundef %op2) nounwind {466; CHECK-LABEL: codegen_whilelo_b64_x2:467; CHECK:       // %bb.0: // %entry468; CHECK-NEXT:    whilelo { p0.d, p1.d }, x0, x1469; CHECK-NEXT:    ret470entry:471  %0 = tail call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv2i1(i64 %op1, i64 %op2)472  %1 = extractvalue { <vscale x 2 x i1>, <vscale x 2 x i1> } %0, 0473  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> %1)474  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)475  %4 = extractvalue { <vscale x 2 x i1>, <vscale x 2 x i1> } %0, 1476  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1> %4)477  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)478  ret <vscale x 32 x i1> %6479}480 481define <vscale x 32 x i1> @codegen_whilels_b16_x2(i64 noundef %op1, i64 noundef %op2) nounwind {482; CHECK-LABEL: codegen_whilels_b16_x2:483; CHECK:       // %bb.0: // %entry484; CHECK-NEXT:    whilels { p0.h, p1.h }, x0, x1485; CHECK-NEXT:    ret486entry:487  %0 = tail call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilels.x2.nxv8i1(i64 %op1, i64 %op2)488  %1 = extractvalue { <vscale x 8 x i1>, <vscale x 8 x i1> } %0, 0489  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %1)490  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)491  %4 = extractvalue { <vscale x 8 x i1>, <vscale x 8 x i1> } %0, 1492  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1> %4)493  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)494  ret <vscale x 32 x i1> %6495}496 497define <vscale x 32 x i1> @codegen_whilelt_b32_x2(i64 noundef %op1, i64 noundef %op2) nounwind {498; CHECK-LABEL: codegen_whilelt_b32_x2:499; CHECK:       // %bb.0: // %entry500; CHECK-NEXT:    whilelt { p0.s, p1.s }, x0, x1501; CHECK-NEXT:    ret502entry:503  %0 = tail call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv4i1(i64 %op1, i64 %op2)504  %1 = extractvalue { <vscale x 4 x i1>, <vscale x 4 x i1> } %0, 0505  %2 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %1)506  %3 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> poison, <vscale x 16 x i1> %2, i64 0)507  %4 = extractvalue { <vscale x 4 x i1>, <vscale x 4 x i1> } %0, 1508  %5 = tail call <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1> %4)509  %6 = tail call <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1> %3, <vscale x 16 x i1> %5, i64 16)510  ret <vscale x 32 x i1> %6511}512 513 514; == Test that we use predicate registers starting at a multiple of 2 ==515 516define <vscale x 16 x i1> @whilege_x2_nxv16i1_reg_off(<vscale x 16 x i1> %p0, i64 %m, i64 %n) nounwind {517; CHECK-LABEL: whilege_x2_nxv16i1_reg_off:518; CHECK:       // %bb.0:519; CHECK-NEXT:    whilege { p2.b, p3.b }, x0, x1520; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b521; CHECK-NEXT:    ret522  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilege.x2.nxv16i1(i64 %m, i64 %n)523  %part1 = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0524  %res = and <vscale x 16 x i1> %part1, %p0525  ret <vscale x 16 x i1> %res526}527 528define <vscale x 8 x i1> @whilegt_x2_nxv8i1_reg_off(<vscale x 8 x i1> %p0, i64 %m, i64 %n) nounwind {529; CHECK-LABEL: whilegt_x2_nxv8i1_reg_off:530; CHECK:       // %bb.0:531; CHECK-NEXT:    whilegt { p2.h, p3.h }, x0, x1532; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b533; CHECK-NEXT:    ret534  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv8i1(i64 %m, i64 %n)535  %part1 = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0536  %res = and <vscale x 8 x i1> %part1, %p0537  ret <vscale x 8 x i1> %res538}539 540define <vscale x 4 x i1> @whilehi_x2_nxv4i1_reg_off(<vscale x 4 x i1> %p0, i64 %m, i64 %n) nounwind {541; CHECK-LABEL: whilehi_x2_nxv4i1_reg_off:542; CHECK:       // %bb.0:543; CHECK-NEXT:    whilehi { p2.s, p3.s }, x0, x1544; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b545; CHECK-NEXT:    ret546  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv4i1(i64 %m, i64 %n)547  %part1 = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0548  %res = and <vscale x 4 x i1> %part1, %p0549  ret <vscale x 4 x i1> %res550}551 552define <vscale x 2 x i1> @whilehs_x2_nxv2i1_reg_off(<vscale x 2 x i1> %p0, i64 %m, i64 %n) nounwind {553; CHECK-LABEL: whilehs_x2_nxv2i1_reg_off:554; CHECK:       // %bb.0:555; CHECK-NEXT:    whilehs { p2.d, p3.d }, x0, x1556; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b557; CHECK-NEXT:    ret558  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv2i1(i64 %m, i64 %n)559  %part1 = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0560  %res = and <vscale x 2 x i1> %part1, %p0561  ret <vscale x 2 x i1> %res562}563 564define <vscale x 16 x i1> @whilele_x2_nxv16i1_reg_off(<vscale x 16 x i1> %p0, i64 %m, i64 %n) nounwind {565; CHECK-LABEL: whilele_x2_nxv16i1_reg_off:566; CHECK:       // %bb.0:567; CHECK-NEXT:    whilele { p2.b, p3.b }, x0, x1568; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b569; CHECK-NEXT:    ret570  %pp = call { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilele.x2.nxv16i1(i64 %m, i64 %n)571  %part1 = extractvalue {<vscale x 16 x i1>, <vscale x 16 x i1>} %pp, 0572  %res = and <vscale x 16 x i1> %part1, %p0573  ret <vscale x 16 x i1> %res574}575 576define <vscale x 8 x i1> @whilelo_x2_nxv8i1_reg_off(<vscale x 8 x i1> %p0, i64 %m, i64 %n) nounwind {577; CHECK-LABEL: whilelo_x2_nxv8i1_reg_off:578; CHECK:       // %bb.0:579; CHECK-NEXT:    whilelo { p2.h, p3.h }, x0, x1580; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b581; CHECK-NEXT:    ret582  %pp = call { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv8i1(i64 %m, i64 %n)583  %part1 = extractvalue {<vscale x 8 x i1>, <vscale x 8 x i1>} %pp, 0584  %res = and <vscale x 8 x i1> %part1, %p0585  ret <vscale x 8 x i1> %res586}587 588define <vscale x 4 x i1> @whilels_x2_nxv4i1_reg_off(<vscale x 4 x i1> %p0, i64 %m, i64 %n) nounwind {589; CHECK-LABEL: whilels_x2_nxv4i1_reg_off:590; CHECK:       // %bb.0:591; CHECK-NEXT:    whilels { p2.s, p3.s }, x0, x1592; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b593; CHECK-NEXT:    ret594  %pp = call { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilels.x2.nxv4i1(i64 %m, i64 %n)595  %part1 = extractvalue {<vscale x 4 x i1>, <vscale x 4 x i1>} %pp, 0596  %res = and <vscale x 4 x i1> %part1, %p0597  ret <vscale x 4 x i1> %res598}599 600define <vscale x 2 x i1> @whilelt_x2_nxv2i1_reg_off(<vscale x 2 x i1> %p0, i64 %m, i64 %n) nounwind {601; CHECK-LABEL: whilelt_x2_nxv2i1_reg_off:602; CHECK:       // %bb.0:603; CHECK-NEXT:    whilelt { p2.d, p3.d }, x0, x1604; CHECK-NEXT:    and p0.b, p2/z, p2.b, p0.b605; CHECK-NEXT:    ret606  %pp = call { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv2i1(i64 %m, i64 %n)607  %part1 = extractvalue {<vscale x 2 x i1>, <vscale x 2 x i1>} %pp, 0608  %res = and <vscale x 2 x i1> %part1, %p0609  ret <vscale x 2 x i1> %res610}611 612; == WHILEGE ==613declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilege.x2.nxv16i1(i64, i64)614declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilege.x2.nxv8i1(i64, i64)615declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilege.x2.nxv4i1(i64, i64)616declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilege.x2.nxv2i1(i64, i64)617 618; == WHILEGT ==619declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv16i1(i64, i64)620declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv8i1(i64, i64)621declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv4i1(i64, i64)622declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilegt.x2.nxv2i1(i64, i64)623 624; == WHILEHI ==625declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv16i1(i64, i64)626declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv8i1(i64, i64)627declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv4i1(i64, i64)628declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilehi.x2.nxv2i1(i64, i64)629 630; == WHILEHS ==631declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv16i1(i64, i64)632declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv8i1(i64, i64)633declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv4i1(i64, i64)634declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilehs.x2.nxv2i1(i64, i64)635 636; == WHILELE ==637declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilele.x2.nxv16i1(i64, i64)638declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilele.x2.nxv8i1(i64, i64)639declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilele.x2.nxv4i1(i64, i64)640declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilele.x2.nxv2i1(i64, i64)641 642; == WHILELO ==643declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv16i1(i64, i64)644declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv8i1(i64, i64)645declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv4i1(i64, i64)646declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilelo.x2.nxv2i1(i64, i64)647 648; == WHILELS ==649declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilels.x2.nxv16i1(i64, i64)650declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilels.x2.nxv8i1(i64, i64)651declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilels.x2.nxv4i1(i64, i64)652declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilels.x2.nxv2i1(i64, i64)653 654; == WHILELT ==655declare { <vscale x 16 x i1>, <vscale x 16 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv16i1(i64, i64)656declare { <vscale x 8 x i1>, <vscale x 8 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv8i1(i64, i64)657declare { <vscale x 4 x i1>, <vscale x 4 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv4i1(i64, i64)658declare { <vscale x 2 x i1>, <vscale x 2 x i1> } @llvm.aarch64.sve.whilelt.x2.nxv2i1(i64, i64)659 660; == SVBOOL CONVERSION ==661declare <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv2i1(<vscale x 2 x i1>)662declare <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv4i1(<vscale x 4 x i1>)663declare <vscale x 16 x i1> @llvm.aarch64.sve.convert.to.svbool.nxv8i1(<vscale x 8 x i1>)664 665; == VECTOR INSERTS ==666declare <vscale x 32 x i1> @llvm.vector.insert.nxv32i1.nxv16i1(<vscale x 32 x i1>, <vscale x 16 x i1>, i64 immarg)667