brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.7 KiB · efe1e16 Raw
718 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve2p1 < %s | FileCheck %s3; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme2 -force-streaming < %s | FileCheck %s4; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sme,+sve2p1 -force-streaming < %s | FileCheck %s5 6;7; WHILEGE8;9 10define target("aarch64.svcount") @whilege_c8_vl2(i64 %a, i64 %b) nounwind {11; CHECK-LABEL: whilege_c8_vl2:12; CHECK:       // %bb.0:13; CHECK-NEXT:    whilege pn8.b, x0, x1, vlx214; CHECK-NEXT:    mov p0.b, p8.b15; CHECK-NEXT:    ret16  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 %a, i64 %b, i32 2)17  ret target("aarch64.svcount") %out18}19 20define target("aarch64.svcount") @whilege_c8_vl4(i64 %a, i64 %b) nounwind {21; CHECK-LABEL: whilege_c8_vl4:22; CHECK:       // %bb.0:23; CHECK-NEXT:    whilege pn8.b, x0, x1, vlx424; CHECK-NEXT:    mov p0.b, p8.b25; CHECK-NEXT:    ret26  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64 %a, i64 %b, i32 4)27  ret target("aarch64.svcount") %out28}29 30define target("aarch64.svcount") @whilege_c16_vl2(i64 %a, i64 %b) nounwind {31; CHECK-LABEL: whilege_c16_vl2:32; CHECK:       // %bb.0:33; CHECK-NEXT:    whilege pn8.h, x0, x1, vlx234; CHECK-NEXT:    mov p0.b, p8.b35; CHECK-NEXT:    ret36  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 %a, i64 %b, i32 2)37  ret target("aarch64.svcount") %out38}39 40define target("aarch64.svcount") @whilege_c16_vl4(i64 %a, i64 %b) nounwind {41; CHECK-LABEL: whilege_c16_vl4:42; CHECK:       // %bb.0:43; CHECK-NEXT:    whilege pn8.h, x0, x1, vlx444; CHECK-NEXT:    mov p0.b, p8.b45; CHECK-NEXT:    ret46  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64 %a, i64 %b, i32 4)47  ret target("aarch64.svcount") %out48}49 50define target("aarch64.svcount") @whilege_c32_vl2(i64 %a, i64 %b) nounwind {51; CHECK-LABEL: whilege_c32_vl2:52; CHECK:       // %bb.0:53; CHECK-NEXT:    whilege pn8.s, x0, x1, vlx254; CHECK-NEXT:    mov p0.b, p8.b55; CHECK-NEXT:    ret56  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 %a, i64 %b, i32 2)57  ret target("aarch64.svcount") %out58}59 60define target("aarch64.svcount") @whilege_c32_vl4(i64 %a, i64 %b) nounwind {61; CHECK-LABEL: whilege_c32_vl4:62; CHECK:       // %bb.0:63; CHECK-NEXT:    whilege pn8.s, x0, x1, vlx464; CHECK-NEXT:    mov p0.b, p8.b65; CHECK-NEXT:    ret66  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64 %a, i64 %b, i32 4)67  ret target("aarch64.svcount") %out68}69 70define target("aarch64.svcount") @whilege_c64_vl2(i64 %a, i64 %b) nounwind {71; CHECK-LABEL: whilege_c64_vl2:72; CHECK:       // %bb.0:73; CHECK-NEXT:    whilege pn8.d, x0, x1, vlx274; CHECK-NEXT:    mov p0.b, p8.b75; CHECK-NEXT:    ret76  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 %a, i64 %b, i32 2)77  ret target("aarch64.svcount") %out78}79 80define target("aarch64.svcount") @whilege_c64_vl4(i64 %a, i64 %b) nounwind {81; CHECK-LABEL: whilege_c64_vl4:82; CHECK:       // %bb.0:83; CHECK-NEXT:    whilege pn8.d, x0, x1, vlx484; CHECK-NEXT:    mov p0.b, p8.b85; CHECK-NEXT:    ret86  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64 %a, i64 %b, i32 4)87  ret target("aarch64.svcount") %out88}89 90 91;92; WHILEGT93;94 95define target("aarch64.svcount") @whilegt_c8_vl2(i64 %a, i64 %b) nounwind {96; CHECK-LABEL: whilegt_c8_vl2:97; CHECK:       // %bb.0:98; CHECK-NEXT:    whilegt pn8.b, x0, x1, vlx299; CHECK-NEXT:    mov p0.b, p8.b100; CHECK-NEXT:    ret101  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 %a, i64 %b, i32 2)102  ret target("aarch64.svcount") %out103}104 105define target("aarch64.svcount") @whilegt_c8_vl4(i64 %a, i64 %b) nounwind {106; CHECK-LABEL: whilegt_c8_vl4:107; CHECK:       // %bb.0:108; CHECK-NEXT:    whilegt pn8.b, x0, x1, vlx4109; CHECK-NEXT:    mov p0.b, p8.b110; CHECK-NEXT:    ret111  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64 %a, i64 %b, i32 4)112  ret target("aarch64.svcount") %out113}114 115define target("aarch64.svcount") @whilegt_c16_vl2(i64 %a, i64 %b) nounwind {116; CHECK-LABEL: whilegt_c16_vl2:117; CHECK:       // %bb.0:118; CHECK-NEXT:    whilegt pn8.h, x0, x1, vlx2119; CHECK-NEXT:    mov p0.b, p8.b120; CHECK-NEXT:    ret121  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 %a, i64 %b, i32 2)122  ret target("aarch64.svcount") %out123}124 125define target("aarch64.svcount") @whilegt_c16_vl4(i64 %a, i64 %b) nounwind {126; CHECK-LABEL: whilegt_c16_vl4:127; CHECK:       // %bb.0:128; CHECK-NEXT:    whilegt pn8.h, x0, x1, vlx4129; CHECK-NEXT:    mov p0.b, p8.b130; CHECK-NEXT:    ret131  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64 %a, i64 %b, i32 4)132  ret target("aarch64.svcount") %out133}134 135define target("aarch64.svcount") @whilegt_c32_vl2(i64 %a, i64 %b) nounwind {136; CHECK-LABEL: whilegt_c32_vl2:137; CHECK:       // %bb.0:138; CHECK-NEXT:    whilegt pn8.s, x0, x1, vlx2139; CHECK-NEXT:    mov p0.b, p8.b140; CHECK-NEXT:    ret141  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 %a, i64 %b, i32 2)142  ret target("aarch64.svcount") %out143}144 145define target("aarch64.svcount") @whilegt_c32_vl4(i64 %a, i64 %b) nounwind {146; CHECK-LABEL: whilegt_c32_vl4:147; CHECK:       // %bb.0:148; CHECK-NEXT:    whilegt pn8.s, x0, x1, vlx4149; CHECK-NEXT:    mov p0.b, p8.b150; CHECK-NEXT:    ret151  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64 %a, i64 %b, i32 4)152  ret target("aarch64.svcount") %out153}154 155define target("aarch64.svcount") @whilegt_c64_vl2(i64 %a, i64 %b) nounwind {156; CHECK-LABEL: whilegt_c64_vl2:157; CHECK:       // %bb.0:158; CHECK-NEXT:    whilegt pn8.d, x0, x1, vlx2159; CHECK-NEXT:    mov p0.b, p8.b160; CHECK-NEXT:    ret161  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 %a, i64 %b, i32 2)162  ret target("aarch64.svcount") %out163}164 165define target("aarch64.svcount") @whilegt_c64_vl4(i64 %a, i64 %b) nounwind {166; CHECK-LABEL: whilegt_c64_vl4:167; CHECK:       // %bb.0:168; CHECK-NEXT:    whilegt pn8.d, x0, x1, vlx4169; CHECK-NEXT:    mov p0.b, p8.b170; CHECK-NEXT:    ret171  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64 %a, i64 %b, i32 4)172  ret target("aarch64.svcount") %out173}174 175 176;177; WHILEHI178;179 180define target("aarch64.svcount") @whilehi_c8_vl2(i64 %a, i64 %b) nounwind {181; CHECK-LABEL: whilehi_c8_vl2:182; CHECK:       // %bb.0:183; CHECK-NEXT:    whilehi pn8.b, x0, x1, vlx2184; CHECK-NEXT:    mov p0.b, p8.b185; CHECK-NEXT:    ret186  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 %a, i64 %b, i32 2)187  ret target("aarch64.svcount") %out188}189 190define target("aarch64.svcount") @whilehi_c8_vl4(i64 %a, i64 %b) nounwind {191; CHECK-LABEL: whilehi_c8_vl4:192; CHECK:       // %bb.0:193; CHECK-NEXT:    whilehi pn8.b, x0, x1, vlx4194; CHECK-NEXT:    mov p0.b, p8.b195; CHECK-NEXT:    ret196  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64 %a, i64 %b, i32 4)197  ret target("aarch64.svcount") %out198}199 200define target("aarch64.svcount") @whilehi_c16_vl2(i64 %a, i64 %b) nounwind {201; CHECK-LABEL: whilehi_c16_vl2:202; CHECK:       // %bb.0:203; CHECK-NEXT:    whilehi pn8.h, x0, x1, vlx2204; CHECK-NEXT:    mov p0.b, p8.b205; CHECK-NEXT:    ret206  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 %a, i64 %b, i32 2)207  ret target("aarch64.svcount") %out208}209 210define target("aarch64.svcount") @whilehi_c16_vl4(i64 %a, i64 %b) nounwind {211; CHECK-LABEL: whilehi_c16_vl4:212; CHECK:       // %bb.0:213; CHECK-NEXT:    whilehi pn8.h, x0, x1, vlx4214; CHECK-NEXT:    mov p0.b, p8.b215; CHECK-NEXT:    ret216  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64 %a, i64 %b, i32 4)217  ret target("aarch64.svcount") %out218}219 220define target("aarch64.svcount") @whilehi_c32_vl2(i64 %a, i64 %b) nounwind {221; CHECK-LABEL: whilehi_c32_vl2:222; CHECK:       // %bb.0:223; CHECK-NEXT:    whilehi pn8.s, x0, x1, vlx2224; CHECK-NEXT:    mov p0.b, p8.b225; CHECK-NEXT:    ret226  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 %a, i64 %b, i32 2)227  ret target("aarch64.svcount") %out228}229 230define target("aarch64.svcount") @whilehi_c32_vl4(i64 %a, i64 %b) nounwind {231; CHECK-LABEL: whilehi_c32_vl4:232; CHECK:       // %bb.0:233; CHECK-NEXT:    whilehi pn8.s, x0, x1, vlx4234; CHECK-NEXT:    mov p0.b, p8.b235; CHECK-NEXT:    ret236  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64 %a, i64 %b, i32 4)237  ret target("aarch64.svcount") %out238}239 240define target("aarch64.svcount") @whilehi_c64_vl2(i64 %a, i64 %b) nounwind {241; CHECK-LABEL: whilehi_c64_vl2:242; CHECK:       // %bb.0:243; CHECK-NEXT:    whilehi pn8.d, x0, x1, vlx2244; CHECK-NEXT:    mov p0.b, p8.b245; CHECK-NEXT:    ret246  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 %a, i64 %b, i32 2)247  ret target("aarch64.svcount") %out248}249 250define target("aarch64.svcount") @whilehi_c64_vl4(i64 %a, i64 %b) nounwind {251; CHECK-LABEL: whilehi_c64_vl4:252; CHECK:       // %bb.0:253; CHECK-NEXT:    whilehi pn8.d, x0, x1, vlx4254; CHECK-NEXT:    mov p0.b, p8.b255; CHECK-NEXT:    ret256  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64 %a, i64 %b, i32 4)257  ret target("aarch64.svcount") %out258}259 260 261;262; WHILEHS263;264 265define target("aarch64.svcount") @whilehs_c8_vl2(i64 %a, i64 %b) nounwind {266; CHECK-LABEL: whilehs_c8_vl2:267; CHECK:       // %bb.0:268; CHECK-NEXT:    whilehs pn8.b, x0, x1, vlx2269; CHECK-NEXT:    mov p0.b, p8.b270; CHECK-NEXT:    ret271  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 %a, i64 %b, i32 2)272  ret target("aarch64.svcount") %out273}274 275define target("aarch64.svcount") @whilehs_c8_vl4(i64 %a, i64 %b) nounwind {276; CHECK-LABEL: whilehs_c8_vl4:277; CHECK:       // %bb.0:278; CHECK-NEXT:    whilehs pn8.b, x0, x1, vlx4279; CHECK-NEXT:    mov p0.b, p8.b280; CHECK-NEXT:    ret281  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64 %a, i64 %b, i32 4)282  ret target("aarch64.svcount") %out283}284 285define target("aarch64.svcount") @whilehs_c16_vl2(i64 %a, i64 %b) nounwind {286; CHECK-LABEL: whilehs_c16_vl2:287; CHECK:       // %bb.0:288; CHECK-NEXT:    whilehs pn8.h, x0, x1, vlx2289; CHECK-NEXT:    mov p0.b, p8.b290; CHECK-NEXT:    ret291  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 %a, i64 %b, i32 2)292  ret target("aarch64.svcount") %out293}294 295define target("aarch64.svcount") @whilehs_c16_vl4(i64 %a, i64 %b) nounwind {296; CHECK-LABEL: whilehs_c16_vl4:297; CHECK:       // %bb.0:298; CHECK-NEXT:    whilehs pn8.h, x0, x1, vlx4299; CHECK-NEXT:    mov p0.b, p8.b300; CHECK-NEXT:    ret301  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64 %a, i64 %b, i32 4)302  ret target("aarch64.svcount") %out303}304 305define target("aarch64.svcount") @whilehs_c32_vl2(i64 %a, i64 %b) nounwind {306; CHECK-LABEL: whilehs_c32_vl2:307; CHECK:       // %bb.0:308; CHECK-NEXT:    whilehs pn8.s, x0, x1, vlx2309; CHECK-NEXT:    mov p0.b, p8.b310; CHECK-NEXT:    ret311  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 %a, i64 %b, i32 2)312  ret target("aarch64.svcount") %out313}314 315define target("aarch64.svcount") @whilehs_c32_vl4(i64 %a, i64 %b) nounwind {316; CHECK-LABEL: whilehs_c32_vl4:317; CHECK:       // %bb.0:318; CHECK-NEXT:    whilehs pn8.s, x0, x1, vlx4319; CHECK-NEXT:    mov p0.b, p8.b320; CHECK-NEXT:    ret321  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64 %a, i64 %b, i32 4)322  ret target("aarch64.svcount") %out323}324 325define target("aarch64.svcount") @whilehs_c64_vl2(i64 %a, i64 %b) nounwind {326; CHECK-LABEL: whilehs_c64_vl2:327; CHECK:       // %bb.0:328; CHECK-NEXT:    whilehs pn8.d, x0, x1, vlx2329; CHECK-NEXT:    mov p0.b, p8.b330; CHECK-NEXT:    ret331  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 %a, i64 %b, i32 2)332  ret target("aarch64.svcount") %out333}334 335define target("aarch64.svcount") @whilehs_c64_vl4(i64 %a, i64 %b) nounwind {336; CHECK-LABEL: whilehs_c64_vl4:337; CHECK:       // %bb.0:338; CHECK-NEXT:    whilehs pn8.d, x0, x1, vlx4339; CHECK-NEXT:    mov p0.b, p8.b340; CHECK-NEXT:    ret341  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64 %a, i64 %b, i32 4)342  ret target("aarch64.svcount") %out343}344 345 346;347; WHILELE348;349 350define target("aarch64.svcount") @whilele_c8_vl2(i64 %a, i64 %b) nounwind {351; CHECK-LABEL: whilele_c8_vl2:352; CHECK:       // %bb.0:353; CHECK-NEXT:    whilele pn8.b, x0, x1, vlx2354; CHECK-NEXT:    mov p0.b, p8.b355; CHECK-NEXT:    ret356  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 %a, i64 %b, i32 2)357  ret target("aarch64.svcount") %out358}359 360define target("aarch64.svcount") @whilele_c8_vl4(i64 %a, i64 %b) nounwind {361; CHECK-LABEL: whilele_c8_vl4:362; CHECK:       // %bb.0:363; CHECK-NEXT:    whilele pn8.b, x0, x1, vlx4364; CHECK-NEXT:    mov p0.b, p8.b365; CHECK-NEXT:    ret366  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64 %a, i64 %b, i32 4)367  ret target("aarch64.svcount") %out368}369 370define target("aarch64.svcount") @whilele_c16_vl2(i64 %a, i64 %b) nounwind {371; CHECK-LABEL: whilele_c16_vl2:372; CHECK:       // %bb.0:373; CHECK-NEXT:    whilele pn8.h, x0, x1, vlx2374; CHECK-NEXT:    mov p0.b, p8.b375; CHECK-NEXT:    ret376  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 %a, i64 %b, i32 2)377  ret target("aarch64.svcount") %out378}379 380define target("aarch64.svcount") @whilele_c16_vl4(i64 %a, i64 %b) nounwind {381; CHECK-LABEL: whilele_c16_vl4:382; CHECK:       // %bb.0:383; CHECK-NEXT:    whilele pn8.h, x0, x1, vlx4384; CHECK-NEXT:    mov p0.b, p8.b385; CHECK-NEXT:    ret386  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64 %a, i64 %b, i32 4)387  ret target("aarch64.svcount") %out388}389 390define target("aarch64.svcount") @whilele_c32_vl2(i64 %a, i64 %b) nounwind {391; CHECK-LABEL: whilele_c32_vl2:392; CHECK:       // %bb.0:393; CHECK-NEXT:    whilele pn8.s, x0, x1, vlx2394; CHECK-NEXT:    mov p0.b, p8.b395; CHECK-NEXT:    ret396  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 %a, i64 %b, i32 2)397  ret target("aarch64.svcount") %out398}399 400define target("aarch64.svcount") @whilele_c32_vl4(i64 %a, i64 %b) nounwind {401; CHECK-LABEL: whilele_c32_vl4:402; CHECK:       // %bb.0:403; CHECK-NEXT:    whilele pn8.s, x0, x1, vlx4404; CHECK-NEXT:    mov p0.b, p8.b405; CHECK-NEXT:    ret406  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64 %a, i64 %b, i32 4)407  ret target("aarch64.svcount") %out408}409 410define target("aarch64.svcount") @whilele_c64_vl2(i64 %a, i64 %b) nounwind {411; CHECK-LABEL: whilele_c64_vl2:412; CHECK:       // %bb.0:413; CHECK-NEXT:    whilele pn8.d, x0, x1, vlx2414; CHECK-NEXT:    mov p0.b, p8.b415; CHECK-NEXT:    ret416  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 %a, i64 %b, i32 2)417  ret target("aarch64.svcount") %out418}419 420define target("aarch64.svcount") @whilele_c64_vl4(i64 %a, i64 %b) nounwind {421; CHECK-LABEL: whilele_c64_vl4:422; CHECK:       // %bb.0:423; CHECK-NEXT:    whilele pn8.d, x0, x1, vlx4424; CHECK-NEXT:    mov p0.b, p8.b425; CHECK-NEXT:    ret426  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64 %a, i64 %b, i32 4)427  ret target("aarch64.svcount") %out428}429 430 431;432; WHILELO433;434 435define target("aarch64.svcount") @whilelo_c8_vl2(i64 %a, i64 %b) nounwind {436; CHECK-LABEL: whilelo_c8_vl2:437; CHECK:       // %bb.0:438; CHECK-NEXT:    whilelo pn8.b, x0, x1, vlx2439; CHECK-NEXT:    mov p0.b, p8.b440; CHECK-NEXT:    ret441  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 %a, i64 %b, i32 2)442  ret target("aarch64.svcount") %out443}444 445define target("aarch64.svcount") @whilelo_c8_vl4(i64 %a, i64 %b) nounwind {446; CHECK-LABEL: whilelo_c8_vl4:447; CHECK:       // %bb.0:448; CHECK-NEXT:    whilelo pn8.b, x0, x1, vlx4449; CHECK-NEXT:    mov p0.b, p8.b450; CHECK-NEXT:    ret451  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64 %a, i64 %b, i32 4)452  ret target("aarch64.svcount") %out453}454 455define target("aarch64.svcount") @whilelo_c16_vl2(i64 %a, i64 %b) nounwind {456; CHECK-LABEL: whilelo_c16_vl2:457; CHECK:       // %bb.0:458; CHECK-NEXT:    whilelo pn8.h, x0, x1, vlx2459; CHECK-NEXT:    mov p0.b, p8.b460; CHECK-NEXT:    ret461  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 %a, i64 %b, i32 2)462  ret target("aarch64.svcount") %out463}464 465define target("aarch64.svcount") @whilelo_c16_vl4(i64 %a, i64 %b) nounwind {466; CHECK-LABEL: whilelo_c16_vl4:467; CHECK:       // %bb.0:468; CHECK-NEXT:    whilelo pn8.h, x0, x1, vlx4469; CHECK-NEXT:    mov p0.b, p8.b470; CHECK-NEXT:    ret471  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64 %a, i64 %b, i32 4)472  ret target("aarch64.svcount") %out473}474 475define target("aarch64.svcount") @whilelo_c32_vl2(i64 %a, i64 %b) nounwind {476; CHECK-LABEL: whilelo_c32_vl2:477; CHECK:       // %bb.0:478; CHECK-NEXT:    whilelo pn8.s, x0, x1, vlx2479; CHECK-NEXT:    mov p0.b, p8.b480; CHECK-NEXT:    ret481  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 %a, i64 %b, i32 2)482  ret target("aarch64.svcount") %out483}484 485define target("aarch64.svcount") @whilelo_c32_vl4(i64 %a, i64 %b) nounwind {486; CHECK-LABEL: whilelo_c32_vl4:487; CHECK:       // %bb.0:488; CHECK-NEXT:    whilelo pn8.s, x0, x1, vlx4489; CHECK-NEXT:    mov p0.b, p8.b490; CHECK-NEXT:    ret491  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64 %a, i64 %b, i32 4)492  ret target("aarch64.svcount") %out493}494 495define target("aarch64.svcount") @whilelo_c64_vl2(i64 %a, i64 %b) nounwind {496; CHECK-LABEL: whilelo_c64_vl2:497; CHECK:       // %bb.0:498; CHECK-NEXT:    whilelo pn8.d, x0, x1, vlx2499; CHECK-NEXT:    mov p0.b, p8.b500; CHECK-NEXT:    ret501  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 %a, i64 %b, i32 2)502  ret target("aarch64.svcount") %out503}504 505define target("aarch64.svcount") @whilelo_c64_vl4(i64 %a, i64 %b) nounwind {506; CHECK-LABEL: whilelo_c64_vl4:507; CHECK:       // %bb.0:508; CHECK-NEXT:    whilelo pn8.d, x0, x1, vlx4509; CHECK-NEXT:    mov p0.b, p8.b510; CHECK-NEXT:    ret511  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64 %a, i64 %b, i32 4)512  ret target("aarch64.svcount") %out513}514 515 516;517; WHILELS518;519 520define target("aarch64.svcount") @whilels_c8_vl2(i64 %a, i64 %b) nounwind {521; CHECK-LABEL: whilels_c8_vl2:522; CHECK:       // %bb.0:523; CHECK-NEXT:    whilels pn8.b, x0, x1, vlx2524; CHECK-NEXT:    mov p0.b, p8.b525; CHECK-NEXT:    ret526  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 %a, i64 %b, i32 2)527  ret target("aarch64.svcount") %out528}529 530define target("aarch64.svcount") @whilels_c8_vl4(i64 %a, i64 %b) nounwind {531; CHECK-LABEL: whilels_c8_vl4:532; CHECK:       // %bb.0:533; CHECK-NEXT:    whilels pn8.b, x0, x1, vlx4534; CHECK-NEXT:    mov p0.b, p8.b535; CHECK-NEXT:    ret536  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64 %a, i64 %b, i32 4)537  ret target("aarch64.svcount") %out538}539 540define target("aarch64.svcount") @whilels_c16_vl2(i64 %a, i64 %b) nounwind {541; CHECK-LABEL: whilels_c16_vl2:542; CHECK:       // %bb.0:543; CHECK-NEXT:    whilels pn8.h, x0, x1, vlx2544; CHECK-NEXT:    mov p0.b, p8.b545; CHECK-NEXT:    ret546  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 %a, i64 %b, i32 2)547  ret target("aarch64.svcount") %out548}549 550define target("aarch64.svcount") @whilels_c16_vl4(i64 %a, i64 %b) nounwind {551; CHECK-LABEL: whilels_c16_vl4:552; CHECK:       // %bb.0:553; CHECK-NEXT:    whilels pn8.h, x0, x1, vlx4554; CHECK-NEXT:    mov p0.b, p8.b555; CHECK-NEXT:    ret556  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64 %a, i64 %b, i32 4)557  ret target("aarch64.svcount") %out558}559 560define target("aarch64.svcount") @whilels_c32_vl2(i64 %a, i64 %b) nounwind {561; CHECK-LABEL: whilels_c32_vl2:562; CHECK:       // %bb.0:563; CHECK-NEXT:    whilels pn8.s, x0, x1, vlx2564; CHECK-NEXT:    mov p0.b, p8.b565; CHECK-NEXT:    ret566  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 %a, i64 %b, i32 2)567  ret target("aarch64.svcount") %out568}569 570define target("aarch64.svcount") @whilels_c32_vl4(i64 %a, i64 %b) nounwind {571; CHECK-LABEL: whilels_c32_vl4:572; CHECK:       // %bb.0:573; CHECK-NEXT:    whilels pn8.s, x0, x1, vlx4574; CHECK-NEXT:    mov p0.b, p8.b575; CHECK-NEXT:    ret576  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64 %a, i64 %b, i32 4)577  ret target("aarch64.svcount") %out578}579 580define target("aarch64.svcount") @whilels_c64_vl2(i64 %a, i64 %b) nounwind {581; CHECK-LABEL: whilels_c64_vl2:582; CHECK:       // %bb.0:583; CHECK-NEXT:    whilels pn8.d, x0, x1, vlx2584; CHECK-NEXT:    mov p0.b, p8.b585; CHECK-NEXT:    ret586  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 %a, i64 %b, i32 2)587  ret target("aarch64.svcount") %out588}589 590define target("aarch64.svcount") @whilels_c64_vl4(i64 %a, i64 %b) nounwind {591; CHECK-LABEL: whilels_c64_vl4:592; CHECK:       // %bb.0:593; CHECK-NEXT:    whilels pn8.d, x0, x1, vlx4594; CHECK-NEXT:    mov p0.b, p8.b595; CHECK-NEXT:    ret596  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64 %a, i64 %b, i32 4)597  ret target("aarch64.svcount") %out598}599 600 601;602; WHILELT603;604 605define target("aarch64.svcount") @whilelt_c8_vl2(i64 %a, i64 %b) nounwind {606; CHECK-LABEL: whilelt_c8_vl2:607; CHECK:       // %bb.0:608; CHECK-NEXT:    whilelt pn8.b, x0, x1, vlx2609; CHECK-NEXT:    mov p0.b, p8.b610; CHECK-NEXT:    ret611  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 %a, i64 %b, i32 2)612  ret target("aarch64.svcount") %out613}614 615define target("aarch64.svcount") @whilelt_c8_vl4(i64 %a, i64 %b) nounwind {616; CHECK-LABEL: whilelt_c8_vl4:617; CHECK:       // %bb.0:618; CHECK-NEXT:    whilelt pn8.b, x0, x1, vlx4619; CHECK-NEXT:    mov p0.b, p8.b620; CHECK-NEXT:    ret621  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64 %a, i64 %b, i32 4)622  ret target("aarch64.svcount") %out623}624 625define target("aarch64.svcount") @whilelt_c16_vl2(i64 %a, i64 %b) nounwind {626; CHECK-LABEL: whilelt_c16_vl2:627; CHECK:       // %bb.0:628; CHECK-NEXT:    whilelt pn8.h, x0, x1, vlx2629; CHECK-NEXT:    mov p0.b, p8.b630; CHECK-NEXT:    ret631  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 %a, i64 %b, i32 2)632  ret target("aarch64.svcount") %out633}634 635define target("aarch64.svcount") @whilelt_c16_vl4(i64 %a, i64 %b) nounwind {636; CHECK-LABEL: whilelt_c16_vl4:637; CHECK:       // %bb.0:638; CHECK-NEXT:    whilelt pn8.h, x0, x1, vlx4639; CHECK-NEXT:    mov p0.b, p8.b640; CHECK-NEXT:    ret641  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64 %a, i64 %b, i32 4)642  ret target("aarch64.svcount") %out643}644 645define target("aarch64.svcount") @whilelt_c32_vl2(i64 %a, i64 %b) nounwind {646; CHECK-LABEL: whilelt_c32_vl2:647; CHECK:       // %bb.0:648; CHECK-NEXT:    whilelt pn8.s, x0, x1, vlx2649; CHECK-NEXT:    mov p0.b, p8.b650; CHECK-NEXT:    ret651  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 %a, i64 %b, i32 2)652  ret target("aarch64.svcount") %out653}654 655define target("aarch64.svcount") @whilelt_c32_vl4(i64 %a, i64 %b) nounwind {656; CHECK-LABEL: whilelt_c32_vl4:657; CHECK:       // %bb.0:658; CHECK-NEXT:    whilelt pn8.s, x0, x1, vlx4659; CHECK-NEXT:    mov p0.b, p8.b660; CHECK-NEXT:    ret661  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64 %a, i64 %b, i32 4)662  ret target("aarch64.svcount") %out663}664 665define target("aarch64.svcount") @whilelt_c64_vl2(i64 %a, i64 %b) nounwind {666; CHECK-LABEL: whilelt_c64_vl2:667; CHECK:       // %bb.0:668; CHECK-NEXT:    whilelt pn8.d, x0, x1, vlx2669; CHECK-NEXT:    mov p0.b, p8.b670; CHECK-NEXT:    ret671  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 %a, i64 %b, i32 2)672  ret target("aarch64.svcount") %out673}674 675define target("aarch64.svcount") @whilelt_c64_vl4(i64 %a, i64 %b) nounwind {676; CHECK-LABEL: whilelt_c64_vl4:677; CHECK:       // %bb.0:678; CHECK-NEXT:    whilelt pn8.d, x0, x1, vlx4679; CHECK-NEXT:    mov p0.b, p8.b680; CHECK-NEXT:    ret681  %out = call target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64 %a, i64 %b, i32 4)682  ret target("aarch64.svcount") %out683}684 685 686declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c8(i64, i64, i32)687declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c16(i64, i64, i32)688declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c32(i64, i64, i32)689declare target("aarch64.svcount") @llvm.aarch64.sve.whilege.c64(i64, i64, i32)690declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c8(i64, i64, i32)691declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c16(i64, i64, i32)692declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c32(i64, i64, i32)693declare target("aarch64.svcount") @llvm.aarch64.sve.whilegt.c64(i64, i64, i32)694declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c8(i64, i64, i32)695declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c16(i64, i64, i32)696declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c32(i64, i64, i32)697declare target("aarch64.svcount") @llvm.aarch64.sve.whilehi.c64(i64, i64, i32)698declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c8(i64, i64, i32)699declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c16(i64, i64, i32)700declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c32(i64, i64, i32)701declare target("aarch64.svcount") @llvm.aarch64.sve.whilehs.c64(i64, i64, i32)702declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c8(i64, i64, i32)703declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c16(i64, i64, i32)704declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c32(i64, i64, i32)705declare target("aarch64.svcount") @llvm.aarch64.sve.whilele.c64(i64, i64, i32)706declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c8(i64, i64, i32)707declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c16(i64, i64, i32)708declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c32(i64, i64, i32)709declare target("aarch64.svcount") @llvm.aarch64.sve.whilelo.c64(i64, i64, i32)710declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c8(i64, i64, i32)711declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c16(i64, i64, i32)712declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c32(i64, i64, i32)713declare target("aarch64.svcount") @llvm.aarch64.sve.whilels.c64(i64, i64, i32)714declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c8(i64, i64, i32)715declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c16(i64, i64, i32)716declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c32(i64, i64, i32)717declare target("aarch64.svcount") @llvm.aarch64.sve.whilelt.c64(i64, i64, i32)718