brintos

brintos / llvm-project-archived public Read only

0
0
Text · 80.6 KiB · c7a928f Raw
2195 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mattr=+bf16,+sve    < %s | FileCheck %s -check-prefixes=CHECK,SVE3; RUN: llc -mattr=+bf16,+sve2p2 < %s | FileCheck %s -check-prefix CHECK-2p24; RUN: llc -mattr=+bf16,+sve,+sme2p2 < %s | FileCheck %s -check-prefix CHECK-2p25 6; RUN: llc -mattr=+bf16,+sme    -force-streaming < %s | FileCheck %s -check-prefixes=CHECK,STREAMING-SVE7; RUN: llc -mattr=+bf16,+sme2p2 -force-streaming < %s | FileCheck %s -check-prefix CHECK-2p28; RUN: llc -mattr=+bf16,+sme,+sve2p2 -force-streaming < %s | FileCheck %s -check-prefix CHECK-2p29 10target triple = "aarch64-linux"11 12define <vscale x 16 x i8> @test_svcls_s8_x_1(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %x) {13; CHECK-LABEL: test_svcls_s8_x_1:14; CHECK:       // %bb.0: // %entry15; CHECK-NEXT:    cls z0.b, p0/m, z0.b16; CHECK-NEXT:    ret17;18; CHECK-2p2-LABEL: test_svcls_s8_x_1:19; CHECK-2p2:       // %bb.0: // %entry20; CHECK-2p2-NEXT:    cls z0.b, p0/z, z0.b21; CHECK-2p2-NEXT:    ret22entry:23  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cls.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)24  ret <vscale x 16 x i8> %025}26 27define <vscale x 16 x i8> @test_svcls_s8_x_2(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {28; CHECK-LABEL: test_svcls_s8_x_2:29; CHECK:       // %bb.0: // %entry30; CHECK-NEXT:    movprfx z0, z131; CHECK-NEXT:    cls z0.b, p0/m, z1.b32; CHECK-NEXT:    ret33;34; CHECK-2p2-LABEL: test_svcls_s8_x_2:35; CHECK-2p2:       // %bb.0: // %entry36; CHECK-2p2-NEXT:    cls z0.b, p0/z, z1.b37; CHECK-2p2-NEXT:    ret38entry:39  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cls.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)40  ret <vscale x 16 x i8> %041}42 43define <vscale x 16 x i8> @test_svcls_s8_z(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {44; SVE-LABEL: test_svcls_s8_z:45; SVE:       // %bb.0: // %entry46; SVE-NEXT:    movi v0.2d, #000000000000000047; SVE-NEXT:    cls z0.b, p0/m, z1.b48; SVE-NEXT:    ret49;50; CHECK-2p2-LABEL: test_svcls_s8_z:51; CHECK-2p2:       // %bb.0: // %entry52; CHECK-2p2-NEXT:    cls z0.b, p0/z, z1.b53; CHECK-2p2-NEXT:    ret54;55; STREAMING-SVE-LABEL: test_svcls_s8_z:56; STREAMING-SVE:       // %bb.0: // %entry57; STREAMING-SVE-NEXT:    mov z0.b, #0 // =0x058; STREAMING-SVE-NEXT:    cls z0.b, p0/m, z1.b59; STREAMING-SVE-NEXT:    ret60entry:61  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cls.nxv16i8(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)62  ret <vscale x 16 x i8> %063}64 65define <vscale x 8 x i16> @test_svcls_s16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) {66; CHECK-LABEL: test_svcls_s16_x_1:67; CHECK:       // %bb.0: // %entry68; CHECK-NEXT:    cls z0.h, p0/m, z0.h69; CHECK-NEXT:    ret70;71; CHECK-2p2-LABEL: test_svcls_s16_x_1:72; CHECK-2p2:       // %bb.0: // %entry73; CHECK-2p2-NEXT:    cls z0.h, p0/z, z0.h74; CHECK-2p2-NEXT:    ret75entry:76  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cls.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)77  ret <vscale x 8 x i16> %078}79 80define <vscale x 8 x i16> @test_svcls_s16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {81; CHECK-LABEL: test_svcls_s16_x_2:82; CHECK:       // %bb.0: // %entry83; CHECK-NEXT:    movprfx z0, z184; CHECK-NEXT:    cls z0.h, p0/m, z1.h85; CHECK-NEXT:    ret86;87; CHECK-2p2-LABEL: test_svcls_s16_x_2:88; CHECK-2p2:       // %bb.0: // %entry89; CHECK-2p2-NEXT:    cls z0.h, p0/z, z1.h90; CHECK-2p2-NEXT:    ret91entry:92  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cls.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)93  ret <vscale x 8 x i16> %094}95 96define <vscale x 8 x i16> @test_svcls_s16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {97; SVE-LABEL: test_svcls_s16_z:98; SVE:       // %bb.0: // %entry99; SVE-NEXT:    movi v0.2d, #0000000000000000100; SVE-NEXT:    cls z0.h, p0/m, z1.h101; SVE-NEXT:    ret102;103; CHECK-2p2-LABEL: test_svcls_s16_z:104; CHECK-2p2:       // %bb.0: // %entry105; CHECK-2p2-NEXT:    cls z0.h, p0/z, z1.h106; CHECK-2p2-NEXT:    ret107;108; STREAMING-SVE-LABEL: test_svcls_s16_z:109; STREAMING-SVE:       // %bb.0: // %entry110; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x0111; STREAMING-SVE-NEXT:    cls z0.h, p0/m, z1.h112; STREAMING-SVE-NEXT:    ret113entry:114  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cls.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)115  ret <vscale x 8 x i16> %0116}117 118define <vscale x 4 x i32> @test_svcls_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) {119; CHECK-LABEL: test_svcls_s32_x_1:120; CHECK:       // %bb.0: // %entry121; CHECK-NEXT:    cls z0.s, p0/m, z0.s122; CHECK-NEXT:    ret123;124; CHECK-2p2-LABEL: test_svcls_s32_x_1:125; CHECK-2p2:       // %bb.0: // %entry126; CHECK-2p2-NEXT:    cls z0.s, p0/z, z0.s127; CHECK-2p2-NEXT:    ret128entry:129  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cls.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)130  ret <vscale x 4 x i32> %0131}132 133define <vscale x 4 x i32> @test_svcls_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {134; CHECK-LABEL: test_svcls_s32_x_2:135; CHECK:       // %bb.0: // %entry136; CHECK-NEXT:    movprfx z0, z1137; CHECK-NEXT:    cls z0.s, p0/m, z1.s138; CHECK-NEXT:    ret139;140; CHECK-2p2-LABEL: test_svcls_s32_x_2:141; CHECK-2p2:       // %bb.0: // %entry142; CHECK-2p2-NEXT:    cls z0.s, p0/z, z1.s143; CHECK-2p2-NEXT:    ret144entry:145  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cls.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)146  ret <vscale x 4 x i32> %0147}148 149define <vscale x 4 x i32> @test_svcls_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {150; SVE-LABEL: test_svcls_s32_z:151; SVE:       // %bb.0: // %entry152; SVE-NEXT:    movi v0.2d, #0000000000000000153; SVE-NEXT:    cls z0.s, p0/m, z1.s154; SVE-NEXT:    ret155;156; CHECK-2p2-LABEL: test_svcls_s32_z:157; CHECK-2p2:       // %bb.0: // %entry158; CHECK-2p2-NEXT:    cls z0.s, p0/z, z1.s159; CHECK-2p2-NEXT:    ret160;161; STREAMING-SVE-LABEL: test_svcls_s32_z:162; STREAMING-SVE:       // %bb.0: // %entry163; STREAMING-SVE-NEXT:    mov z0.s, #0 // =0x0164; STREAMING-SVE-NEXT:    cls z0.s, p0/m, z1.s165; STREAMING-SVE-NEXT:    ret166entry:167  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cls.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)168  ret <vscale x 4 x i32> %0169}170 171define <vscale x 2 x i64> @test_svcls_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) {172; CHECK-LABEL: test_svcls_s64_x_1:173; CHECK:       // %bb.0: // %entry174; CHECK-NEXT:    cls z0.d, p0/m, z0.d175; CHECK-NEXT:    ret176;177; CHECK-2p2-LABEL: test_svcls_s64_x_1:178; CHECK-2p2:       // %bb.0: // %entry179; CHECK-2p2-NEXT:    cls z0.d, p0/z, z0.d180; CHECK-2p2-NEXT:    ret181entry:182  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cls.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)183  ret <vscale x 2 x i64> %0184}185 186define <vscale x 2 x i64> @test_svcls_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {187; CHECK-LABEL: test_svcls_s64_x_2:188; CHECK:       // %bb.0: // %entry189; CHECK-NEXT:    movprfx z0, z1190; CHECK-NEXT:    cls z0.d, p0/m, z1.d191; CHECK-NEXT:    ret192;193; CHECK-2p2-LABEL: test_svcls_s64_x_2:194; CHECK-2p2:       // %bb.0: // %entry195; CHECK-2p2-NEXT:    cls z0.d, p0/z, z1.d196; CHECK-2p2-NEXT:    ret197entry:198  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cls.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)199  ret <vscale x 2 x i64> %0200}201 202define <vscale x 2 x i64> @test_svcls_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {203; SVE-LABEL: test_svcls_s64_z:204; SVE:       // %bb.0: // %entry205; SVE-NEXT:    movi v0.2d, #0000000000000000206; SVE-NEXT:    cls z0.d, p0/m, z1.d207; SVE-NEXT:    ret208;209; CHECK-2p2-LABEL: test_svcls_s64_z:210; CHECK-2p2:       // %bb.0: // %entry211; CHECK-2p2-NEXT:    cls z0.d, p0/z, z1.d212; CHECK-2p2-NEXT:    ret213;214; STREAMING-SVE-LABEL: test_svcls_s64_z:215; STREAMING-SVE:       // %bb.0: // %entry216; STREAMING-SVE-NEXT:    mov z0.d, #0 // =0x0217; STREAMING-SVE-NEXT:    cls z0.d, p0/m, z1.d218; STREAMING-SVE-NEXT:    ret219entry:220  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cls.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)221  ret <vscale x 2 x i64> %0222}223 224define <vscale x 16 x i8> @test_svclz_s8_x_1(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %x) {225; CHECK-LABEL: test_svclz_s8_x_1:226; CHECK:       // %bb.0: // %entry227; CHECK-NEXT:    clz z0.b, p0/m, z0.b228; CHECK-NEXT:    ret229;230; CHECK-2p2-LABEL: test_svclz_s8_x_1:231; CHECK-2p2:       // %bb.0: // %entry232; CHECK-2p2-NEXT:    clz z0.b, p0/z, z0.b233; CHECK-2p2-NEXT:    ret234entry:235  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.clz.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)236  ret <vscale x 16 x i8> %0237}238 239define <vscale x 16 x i8> @test_svclz_s8_x_2(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {240; CHECK-LABEL: test_svclz_s8_x_2:241; CHECK:       // %bb.0: // %entry242; CHECK-NEXT:    movprfx z0, z1243; CHECK-NEXT:    clz z0.b, p0/m, z1.b244; CHECK-NEXT:    ret245;246; CHECK-2p2-LABEL: test_svclz_s8_x_2:247; CHECK-2p2:       // %bb.0: // %entry248; CHECK-2p2-NEXT:    clz z0.b, p0/z, z1.b249; CHECK-2p2-NEXT:    ret250entry:251  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.clz.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)252  ret <vscale x 16 x i8> %0253}254 255define <vscale x 16 x i8> @test_svclz_s8_z(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {256; SVE-LABEL: test_svclz_s8_z:257; SVE:       // %bb.0: // %entry258; SVE-NEXT:    movi v0.2d, #0000000000000000259; SVE-NEXT:    clz z0.b, p0/m, z1.b260; SVE-NEXT:    ret261;262; CHECK-2p2-LABEL: test_svclz_s8_z:263; CHECK-2p2:       // %bb.0: // %entry264; CHECK-2p2-NEXT:    clz z0.b, p0/z, z1.b265; CHECK-2p2-NEXT:    ret266;267; STREAMING-SVE-LABEL: test_svclz_s8_z:268; STREAMING-SVE:       // %bb.0: // %entry269; STREAMING-SVE-NEXT:    mov z0.b, #0 // =0x0270; STREAMING-SVE-NEXT:    clz z0.b, p0/m, z1.b271; STREAMING-SVE-NEXT:    ret272entry:273  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.clz.nxv16i8(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)274  ret <vscale x 16 x i8> %0275}276 277define <vscale x 8 x i16> @test_svclz_s16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) {278; CHECK-LABEL: test_svclz_s16_x_1:279; CHECK:       // %bb.0: // %entry280; CHECK-NEXT:    clz z0.h, p0/m, z0.h281; CHECK-NEXT:    ret282;283; CHECK-2p2-LABEL: test_svclz_s16_x_1:284; CHECK-2p2:       // %bb.0: // %entry285; CHECK-2p2-NEXT:    clz z0.h, p0/z, z0.h286; CHECK-2p2-NEXT:    ret287entry:288  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.clz.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)289  ret <vscale x 8 x i16> %0290}291 292define <vscale x 8 x i16> @test_svclz_s16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {293; CHECK-LABEL: test_svclz_s16_x_2:294; CHECK:       // %bb.0: // %entry295; CHECK-NEXT:    movprfx z0, z1296; CHECK-NEXT:    clz z0.h, p0/m, z1.h297; CHECK-NEXT:    ret298;299; CHECK-2p2-LABEL: test_svclz_s16_x_2:300; CHECK-2p2:       // %bb.0: // %entry301; CHECK-2p2-NEXT:    clz z0.h, p0/z, z1.h302; CHECK-2p2-NEXT:    ret303entry:304  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.clz.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)305  ret <vscale x 8 x i16> %0306}307 308define <vscale x 8 x i16> @test_svclz_s16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {309; SVE-LABEL: test_svclz_s16_z:310; SVE:       // %bb.0: // %entry311; SVE-NEXT:    movi v0.2d, #0000000000000000312; SVE-NEXT:    clz z0.h, p0/m, z1.h313; SVE-NEXT:    ret314;315; CHECK-2p2-LABEL: test_svclz_s16_z:316; CHECK-2p2:       // %bb.0: // %entry317; CHECK-2p2-NEXT:    clz z0.h, p0/z, z1.h318; CHECK-2p2-NEXT:    ret319;320; STREAMING-SVE-LABEL: test_svclz_s16_z:321; STREAMING-SVE:       // %bb.0: // %entry322; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x0323; STREAMING-SVE-NEXT:    clz z0.h, p0/m, z1.h324; STREAMING-SVE-NEXT:    ret325entry:326  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.clz.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)327  ret <vscale x 8 x i16> %0328}329 330define <vscale x 4 x i32> @test_svclz_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) {331; CHECK-LABEL: test_svclz_s32_x_1:332; CHECK:       // %bb.0: // %entry333; CHECK-NEXT:    clz z0.s, p0/m, z0.s334; CHECK-NEXT:    ret335;336; CHECK-2p2-LABEL: test_svclz_s32_x_1:337; CHECK-2p2:       // %bb.0: // %entry338; CHECK-2p2-NEXT:    clz z0.s, p0/z, z0.s339; CHECK-2p2-NEXT:    ret340entry:341  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.clz.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)342  ret <vscale x 4 x i32> %0343}344 345define <vscale x 4 x i32> @test_svclz_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {346; CHECK-LABEL: test_svclz_s32_x_2:347; CHECK:       // %bb.0: // %entry348; CHECK-NEXT:    movprfx z0, z1349; CHECK-NEXT:    clz z0.s, p0/m, z1.s350; CHECK-NEXT:    ret351;352; CHECK-2p2-LABEL: test_svclz_s32_x_2:353; CHECK-2p2:       // %bb.0: // %entry354; CHECK-2p2-NEXT:    clz z0.s, p0/z, z1.s355; CHECK-2p2-NEXT:    ret356entry:357  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.clz.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)358  ret <vscale x 4 x i32> %0359}360 361define <vscale x 4 x i32> @test_svclz_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {362; SVE-LABEL: test_svclz_s32_z:363; SVE:       // %bb.0: // %entry364; SVE-NEXT:    movi v0.2d, #0000000000000000365; SVE-NEXT:    clz z0.s, p0/m, z1.s366; SVE-NEXT:    ret367;368; CHECK-2p2-LABEL: test_svclz_s32_z:369; CHECK-2p2:       // %bb.0: // %entry370; CHECK-2p2-NEXT:    clz z0.s, p0/z, z1.s371; CHECK-2p2-NEXT:    ret372;373; STREAMING-SVE-LABEL: test_svclz_s32_z:374; STREAMING-SVE:       // %bb.0: // %entry375; STREAMING-SVE-NEXT:    mov z0.s, #0 // =0x0376; STREAMING-SVE-NEXT:    clz z0.s, p0/m, z1.s377; STREAMING-SVE-NEXT:    ret378entry:379  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.clz.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)380  ret <vscale x 4 x i32> %0381}382 383define <vscale x 2 x i64> @test_svclz_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) {384; CHECK-LABEL: test_svclz_s64_x_1:385; CHECK:       // %bb.0: // %entry386; CHECK-NEXT:    clz z0.d, p0/m, z0.d387; CHECK-NEXT:    ret388;389; CHECK-2p2-LABEL: test_svclz_s64_x_1:390; CHECK-2p2:       // %bb.0: // %entry391; CHECK-2p2-NEXT:    clz z0.d, p0/z, z0.d392; CHECK-2p2-NEXT:    ret393entry:394  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.clz.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)395  ret <vscale x 2 x i64> %0396}397 398define <vscale x 2 x i64> @test_svclz_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {399; CHECK-LABEL: test_svclz_s64_x_2:400; CHECK:       // %bb.0: // %entry401; CHECK-NEXT:    movprfx z0, z1402; CHECK-NEXT:    clz z0.d, p0/m, z1.d403; CHECK-NEXT:    ret404;405; CHECK-2p2-LABEL: test_svclz_s64_x_2:406; CHECK-2p2:       // %bb.0: // %entry407; CHECK-2p2-NEXT:    clz z0.d, p0/z, z1.d408; CHECK-2p2-NEXT:    ret409entry:410  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.clz.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)411  ret <vscale x 2 x i64> %0412}413 414define <vscale x 2 x i64> @test_svclz_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {415; SVE-LABEL: test_svclz_s64_z:416; SVE:       // %bb.0: // %entry417; SVE-NEXT:    movi v0.2d, #0000000000000000418; SVE-NEXT:    clz z0.d, p0/m, z1.d419; SVE-NEXT:    ret420;421; CHECK-2p2-LABEL: test_svclz_s64_z:422; CHECK-2p2:       // %bb.0: // %entry423; CHECK-2p2-NEXT:    clz z0.d, p0/z, z1.d424; CHECK-2p2-NEXT:    ret425;426; STREAMING-SVE-LABEL: test_svclz_s64_z:427; STREAMING-SVE:       // %bb.0: // %entry428; STREAMING-SVE-NEXT:    mov z0.d, #0 // =0x0429; STREAMING-SVE-NEXT:    clz z0.d, p0/m, z1.d430; STREAMING-SVE-NEXT:    ret431entry:432  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.clz.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)433  ret <vscale x 2 x i64> %0434}435 436define <vscale x 16 x i8> @test_svcnt_s8_x_1(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %x) {437; CHECK-LABEL: test_svcnt_s8_x_1:438; CHECK:       // %bb.0: // %entry439; CHECK-NEXT:    cnt z0.b, p0/m, z0.b440; CHECK-NEXT:    ret441;442; CHECK-2p2-LABEL: test_svcnt_s8_x_1:443; CHECK-2p2:       // %bb.0: // %entry444; CHECK-2p2-NEXT:    cnt z0.b, p0/z, z0.b445; CHECK-2p2-NEXT:    ret446entry:447  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnt.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)448  ret <vscale x 16 x i8> %0449}450 451define <vscale x 16 x i8> @test_svcnt_s8_x_2(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {452; CHECK-LABEL: test_svcnt_s8_x_2:453; CHECK:       // %bb.0: // %entry454; CHECK-NEXT:    movprfx z0, z1455; CHECK-NEXT:    cnt z0.b, p0/m, z1.b456; CHECK-NEXT:    ret457;458; CHECK-2p2-LABEL: test_svcnt_s8_x_2:459; CHECK-2p2:       // %bb.0: // %entry460; CHECK-2p2-NEXT:    cnt z0.b, p0/z, z1.b461; CHECK-2p2-NEXT:    ret462entry:463  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnt.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)464  ret <vscale x 16 x i8> %0465}466 467define <vscale x 16 x i8> @test_svcnt_s8_z(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {468; SVE-LABEL: test_svcnt_s8_z:469; SVE:       // %bb.0: // %entry470; SVE-NEXT:    movi v0.2d, #0000000000000000471; SVE-NEXT:    cnt z0.b, p0/m, z1.b472; SVE-NEXT:    ret473;474; CHECK-2p2-LABEL: test_svcnt_s8_z:475; CHECK-2p2:       // %bb.0: // %entry476; CHECK-2p2-NEXT:    cnt z0.b, p0/z, z1.b477; CHECK-2p2-NEXT:    ret478;479; STREAMING-SVE-LABEL: test_svcnt_s8_z:480; STREAMING-SVE:       // %bb.0: // %entry481; STREAMING-SVE-NEXT:    mov z0.b, #0 // =0x0482; STREAMING-SVE-NEXT:    cnt z0.b, p0/m, z1.b483; STREAMING-SVE-NEXT:    ret484entry:485  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnt.nxv16i8(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)486  ret <vscale x 16 x i8> %0487}488 489define <vscale x 8 x i16> @test_svcnt_s16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) {490; CHECK-LABEL: test_svcnt_s16_x_1:491; CHECK:       // %bb.0: // %entry492; CHECK-NEXT:    cnt z0.h, p0/m, z0.h493; CHECK-NEXT:    ret494;495; CHECK-2p2-LABEL: test_svcnt_s16_x_1:496; CHECK-2p2:       // %bb.0: // %entry497; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z0.h498; CHECK-2p2-NEXT:    ret499entry:500  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)501  ret <vscale x 8 x i16> %0502}503 504define <vscale x 8 x i16> @test_svcnt_s16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {505; CHECK-LABEL: test_svcnt_s16_x_2:506; CHECK:       // %bb.0: // %entry507; CHECK-NEXT:    movprfx z0, z1508; CHECK-NEXT:    cnt z0.h, p0/m, z1.h509; CHECK-NEXT:    ret510;511; CHECK-2p2-LABEL: test_svcnt_s16_x_2:512; CHECK-2p2:       // %bb.0: // %entry513; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h514; CHECK-2p2-NEXT:    ret515entry:516  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)517  ret <vscale x 8 x i16> %0518}519 520define <vscale x 8 x i16> @test_svcnt_s16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {521; SVE-LABEL: test_svcnt_s16_z:522; SVE:       // %bb.0: // %entry523; SVE-NEXT:    movi v0.2d, #0000000000000000524; SVE-NEXT:    cnt z0.h, p0/m, z1.h525; SVE-NEXT:    ret526;527; CHECK-2p2-LABEL: test_svcnt_s16_z:528; CHECK-2p2:       // %bb.0: // %entry529; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h530; CHECK-2p2-NEXT:    ret531;532; STREAMING-SVE-LABEL: test_svcnt_s16_z:533; STREAMING-SVE:       // %bb.0: // %entry534; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x0535; STREAMING-SVE-NEXT:    cnt z0.h, p0/m, z1.h536; STREAMING-SVE-NEXT:    ret537entry:538  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)539  ret <vscale x 8 x i16> %0540}541 542define <vscale x 4 x i32> @test_svcnt_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) {543; CHECK-LABEL: test_svcnt_s32_x_1:544; CHECK:       // %bb.0: // %entry545; CHECK-NEXT:    cnt z0.s, p0/m, z0.s546; CHECK-NEXT:    ret547;548; CHECK-2p2-LABEL: test_svcnt_s32_x_1:549; CHECK-2p2:       // %bb.0: // %entry550; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z0.s551; CHECK-2p2-NEXT:    ret552entry:553  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)554  ret <vscale x 4 x i32> %0555}556 557define <vscale x 4 x i32> @test_svcnt_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {558; CHECK-LABEL: test_svcnt_s32_x_2:559; CHECK:       // %bb.0: // %entry560; CHECK-NEXT:    movprfx z0, z1561; CHECK-NEXT:    cnt z0.s, p0/m, z1.s562; CHECK-NEXT:    ret563;564; CHECK-2p2-LABEL: test_svcnt_s32_x_2:565; CHECK-2p2:       // %bb.0: // %entry566; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z1.s567; CHECK-2p2-NEXT:    ret568entry:569  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)570  ret <vscale x 4 x i32> %0571}572 573define <vscale x 4 x i32> @test_svcnt_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {574; SVE-LABEL: test_svcnt_s32_z:575; SVE:       // %bb.0: // %entry576; SVE-NEXT:    movi v0.2d, #0000000000000000577; SVE-NEXT:    cnt z0.s, p0/m, z1.s578; SVE-NEXT:    ret579;580; CHECK-2p2-LABEL: test_svcnt_s32_z:581; CHECK-2p2:       // %bb.0: // %entry582; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z1.s583; CHECK-2p2-NEXT:    ret584;585; STREAMING-SVE-LABEL: test_svcnt_s32_z:586; STREAMING-SVE:       // %bb.0: // %entry587; STREAMING-SVE-NEXT:    mov z0.s, #0 // =0x0588; STREAMING-SVE-NEXT:    cnt z0.s, p0/m, z1.s589; STREAMING-SVE-NEXT:    ret590entry:591  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)592  ret <vscale x 4 x i32> %0593}594 595define <vscale x 2 x i64> @test_svcnt_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) {596; CHECK-LABEL: test_svcnt_s64_x_1:597; CHECK:       // %bb.0: // %entry598; CHECK-NEXT:    cnt z0.d, p0/m, z0.d599; CHECK-NEXT:    ret600;601; CHECK-2p2-LABEL: test_svcnt_s64_x_1:602; CHECK-2p2:       // %bb.0: // %entry603; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z0.d604; CHECK-2p2-NEXT:    ret605entry:606  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)607  ret <vscale x 2 x i64> %0608}609 610define <vscale x 2 x i64> @test_svcnt_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {611; CHECK-LABEL: test_svcnt_s64_x_2:612; CHECK:       // %bb.0: // %entry613; CHECK-NEXT:    movprfx z0, z1614; CHECK-NEXT:    cnt z0.d, p0/m, z1.d615; CHECK-NEXT:    ret616;617; CHECK-2p2-LABEL: test_svcnt_s64_x_2:618; CHECK-2p2:       // %bb.0: // %entry619; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z1.d620; CHECK-2p2-NEXT:    ret621entry:622  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)623  ret <vscale x 2 x i64> %0624}625 626define <vscale x 2 x i64> @test_svcnt_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {627; SVE-LABEL: test_svcnt_s64_z:628; SVE:       // %bb.0: // %entry629; SVE-NEXT:    movi v0.2d, #0000000000000000630; SVE-NEXT:    cnt z0.d, p0/m, z1.d631; SVE-NEXT:    ret632;633; CHECK-2p2-LABEL: test_svcnt_s64_z:634; CHECK-2p2:       // %bb.0: // %entry635; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z1.d636; CHECK-2p2-NEXT:    ret637;638; STREAMING-SVE-LABEL: test_svcnt_s64_z:639; STREAMING-SVE:       // %bb.0: // %entry640; STREAMING-SVE-NEXT:    mov z0.d, #0 // =0x0641; STREAMING-SVE-NEXT:    cnt z0.d, p0/m, z1.d642; STREAMING-SVE-NEXT:    ret643entry:644  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)645  ret <vscale x 2 x i64> %0646}647 648define <vscale x 8 x i16> @test_svcnt_f16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x half> %x) {649; CHECK-LABEL: test_svcnt_f16_x_1:650; CHECK:       // %bb.0: // %entry651; CHECK-NEXT:    cnt z0.h, p0/m, z0.h652; CHECK-NEXT:    ret653;654; CHECK-2p2-LABEL: test_svcnt_f16_x_1:655; CHECK-2p2:       // %bb.0: // %entry656; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z0.h657; CHECK-2p2-NEXT:    ret658entry:659  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8f16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x half> %x)660  ret <vscale x 8 x i16> %0661}662 663define <vscale x 8 x i16> @test_svcnt_f16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x half> %x) {664; CHECK-LABEL: test_svcnt_f16_x_2:665; CHECK:       // %bb.0: // %entry666; CHECK-NEXT:    movprfx z0, z1667; CHECK-NEXT:    cnt z0.h, p0/m, z1.h668; CHECK-NEXT:    ret669;670; CHECK-2p2-LABEL: test_svcnt_f16_x_2:671; CHECK-2p2:       // %bb.0: // %entry672; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h673; CHECK-2p2-NEXT:    ret674entry:675  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8f16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x half> %x)676  ret <vscale x 8 x i16> %0677}678 679define <vscale x 8 x i16> @test_svcnt_f16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x half> %x) {680; SVE-LABEL: test_svcnt_f16_z:681; SVE:       // %bb.0: // %entry682; SVE-NEXT:    movi v0.2d, #0000000000000000683; SVE-NEXT:    cnt z0.h, p0/m, z1.h684; SVE-NEXT:    ret685;686; CHECK-2p2-LABEL: test_svcnt_f16_z:687; CHECK-2p2:       // %bb.0: // %entry688; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h689; CHECK-2p2-NEXT:    ret690;691; STREAMING-SVE-LABEL: test_svcnt_f16_z:692; STREAMING-SVE:       // %bb.0: // %entry693; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x0694; STREAMING-SVE-NEXT:    cnt z0.h, p0/m, z1.h695; STREAMING-SVE-NEXT:    ret696entry:697  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8f16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x half> %x)698  ret <vscale x 8 x i16> %0699}700 701define <vscale x 8 x i16> @test_svcnt_bf16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x bfloat> %x) {702; CHECK-LABEL: test_svcnt_bf16_x_1:703; CHECK:       // %bb.0: // %entry704; CHECK-NEXT:    cnt z0.h, p0/m, z0.h705; CHECK-NEXT:    ret706;707; CHECK-2p2-LABEL: test_svcnt_bf16_x_1:708; CHECK-2p2:       // %bb.0: // %entry709; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z0.h710; CHECK-2p2-NEXT:    ret711entry:712  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8bf16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x bfloat> %x)713  ret <vscale x 8 x i16> %0714}715 716define <vscale x 8 x i16> @test_svcnt_bf16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x bfloat> %x) {717; CHECK-LABEL: test_svcnt_bf16_x_2:718; CHECK:       // %bb.0: // %entry719; CHECK-NEXT:    movprfx z0, z1720; CHECK-NEXT:    cnt z0.h, p0/m, z1.h721; CHECK-NEXT:    ret722;723; CHECK-2p2-LABEL: test_svcnt_bf16_x_2:724; CHECK-2p2:       // %bb.0: // %entry725; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h726; CHECK-2p2-NEXT:    ret727entry:728  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8bf16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x bfloat> %x)729  ret <vscale x 8 x i16> %0730}731 732define <vscale x 8 x i16> @test_svcnt_bf16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x bfloat> %x) {733; SVE-LABEL: test_svcnt_bf16_z:734; SVE:       // %bb.0: // %entry735; SVE-NEXT:    movi v0.2d, #0000000000000000736; SVE-NEXT:    cnt z0.h, p0/m, z1.h737; SVE-NEXT:    ret738;739; CHECK-2p2-LABEL: test_svcnt_bf16_z:740; CHECK-2p2:       // %bb.0: // %entry741; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h742; CHECK-2p2-NEXT:    ret743;744; STREAMING-SVE-LABEL: test_svcnt_bf16_z:745; STREAMING-SVE:       // %bb.0: // %entry746; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x0747; STREAMING-SVE-NEXT:    cnt z0.h, p0/m, z1.h748; STREAMING-SVE-NEXT:    ret749entry:750  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8bf16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x bfloat> %x)751  ret <vscale x 8 x i16> %0752}753 754define <vscale x 4 x i32> @test_svcnt_f32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x float> %x) {755; CHECK-LABEL: test_svcnt_f32_x_1:756; CHECK:       // %bb.0: // %entry757; CHECK-NEXT:    cnt z0.s, p0/m, z0.s758; CHECK-NEXT:    ret759;760; CHECK-2p2-LABEL: test_svcnt_f32_x_1:761; CHECK-2p2:       // %bb.0: // %entry762; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z0.s763; CHECK-2p2-NEXT:    ret764entry:765  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4f32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x float> %x)766  ret <vscale x 4 x i32> %0767}768 769define <vscale x 4 x i32> @test_svcnt_f32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x float> %x) {770; CHECK-LABEL: test_svcnt_f32_x_2:771; CHECK:       // %bb.0: // %entry772; CHECK-NEXT:    movprfx z0, z1773; CHECK-NEXT:    cnt z0.s, p0/m, z1.s774; CHECK-NEXT:    ret775;776; CHECK-2p2-LABEL: test_svcnt_f32_x_2:777; CHECK-2p2:       // %bb.0: // %entry778; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z1.s779; CHECK-2p2-NEXT:    ret780entry:781  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4f32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x float> %x)782  ret <vscale x 4 x i32> %0783}784 785define <vscale x 4 x i32> @test_svcnt_f32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x float> %x) {786; SVE-LABEL: test_svcnt_f32_z:787; SVE:       // %bb.0: // %entry788; SVE-NEXT:    movi v0.2d, #0000000000000000789; SVE-NEXT:    cnt z0.s, p0/m, z1.s790; SVE-NEXT:    ret791;792; CHECK-2p2-LABEL: test_svcnt_f32_z:793; CHECK-2p2:       // %bb.0: // %entry794; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z1.s795; CHECK-2p2-NEXT:    ret796;797; STREAMING-SVE-LABEL: test_svcnt_f32_z:798; STREAMING-SVE:       // %bb.0: // %entry799; STREAMING-SVE-NEXT:    mov z0.s, #0 // =0x0800; STREAMING-SVE-NEXT:    cnt z0.s, p0/m, z1.s801; STREAMING-SVE-NEXT:    ret802entry:803  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4f32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x float> %x)804  ret <vscale x 4 x i32> %0805}806 807define <vscale x 2 x i64> @test_svcnt_f64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x double> %x) {808; CHECK-LABEL: test_svcnt_f64_x_1:809; CHECK:       // %bb.0: // %entry810; CHECK-NEXT:    cnt z0.d, p0/m, z0.d811; CHECK-NEXT:    ret812;813; CHECK-2p2-LABEL: test_svcnt_f64_x_1:814; CHECK-2p2:       // %bb.0: // %entry815; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z0.d816; CHECK-2p2-NEXT:    ret817entry:818  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2f64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x double> %x)819  ret <vscale x 2 x i64> %0820}821 822define <vscale x 2 x i64> @test_svcnt_f64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x double> %x) {823; CHECK-LABEL: test_svcnt_f64_x_2:824; CHECK:       // %bb.0: // %entry825; CHECK-NEXT:    movprfx z0, z1826; CHECK-NEXT:    cnt z0.d, p0/m, z1.d827; CHECK-NEXT:    ret828;829; CHECK-2p2-LABEL: test_svcnt_f64_x_2:830; CHECK-2p2:       // %bb.0: // %entry831; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z1.d832; CHECK-2p2-NEXT:    ret833entry:834  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2f64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x double> %x)835  ret <vscale x 2 x i64> %0836}837 838define <vscale x 2 x i64> @test_svcnt_f64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x double> %x) {839; SVE-LABEL: test_svcnt_f64_z:840; SVE:       // %bb.0: // %entry841; SVE-NEXT:    movi v0.2d, #0000000000000000842; SVE-NEXT:    cnt z0.d, p0/m, z1.d843; SVE-NEXT:    ret844;845; CHECK-2p2-LABEL: test_svcnt_f64_z:846; CHECK-2p2:       // %bb.0: // %entry847; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z1.d848; CHECK-2p2-NEXT:    ret849;850; STREAMING-SVE-LABEL: test_svcnt_f64_z:851; STREAMING-SVE:       // %bb.0: // %entry852; STREAMING-SVE-NEXT:    mov z0.d, #0 // =0x0853; STREAMING-SVE-NEXT:    cnt z0.d, p0/m, z1.d854; STREAMING-SVE-NEXT:    ret855entry:856  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2f64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x double> %x)857  ret <vscale x 2 x i64> %0858}859 860define <vscale x 16 x i8> @test_svcnot_s8_x_1(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %x) {861; CHECK-LABEL: test_svcnot_s8_x_1:862; CHECK:       // %bb.0: // %entry863; CHECK-NEXT:    cnot z0.b, p0/m, z0.b864; CHECK-NEXT:    ret865;866; CHECK-2p2-LABEL: test_svcnot_s8_x_1:867; CHECK-2p2:       // %bb.0: // %entry868; CHECK-2p2-NEXT:    cnot z0.b, p0/z, z0.b869; CHECK-2p2-NEXT:    ret870entry:871  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnot.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)872  ret <vscale x 16 x i8> %0873}874 875define <vscale x 16 x i8> @test_svcnot_s8_x_2(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {876; CHECK-LABEL: test_svcnot_s8_x_2:877; CHECK:       // %bb.0: // %entry878; CHECK-NEXT:    movprfx z0, z1879; CHECK-NEXT:    cnot z0.b, p0/m, z1.b880; CHECK-NEXT:    ret881;882; CHECK-2p2-LABEL: test_svcnot_s8_x_2:883; CHECK-2p2:       // %bb.0: // %entry884; CHECK-2p2-NEXT:    cnot z0.b, p0/z, z1.b885; CHECK-2p2-NEXT:    ret886entry:887  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnot.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)888  ret <vscale x 16 x i8> %0889}890 891define <vscale x 16 x i8> @test_svcnot_s8_z(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {892; SVE-LABEL: test_svcnot_s8_z:893; SVE:       // %bb.0: // %entry894; SVE-NEXT:    movi v0.2d, #0000000000000000895; SVE-NEXT:    cnot z0.b, p0/m, z1.b896; SVE-NEXT:    ret897;898; CHECK-2p2-LABEL: test_svcnot_s8_z:899; CHECK-2p2:       // %bb.0: // %entry900; CHECK-2p2-NEXT:    cnot z0.b, p0/z, z1.b901; CHECK-2p2-NEXT:    ret902;903; STREAMING-SVE-LABEL: test_svcnot_s8_z:904; STREAMING-SVE:       // %bb.0: // %entry905; STREAMING-SVE-NEXT:    mov z0.b, #0 // =0x0906; STREAMING-SVE-NEXT:    cnot z0.b, p0/m, z1.b907; STREAMING-SVE-NEXT:    ret908entry:909  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnot.nxv16i8(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)910  ret <vscale x 16 x i8> %0911}912 913define <vscale x 8 x i16> @test_svcnot_s16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) {914; CHECK-LABEL: test_svcnot_s16_x_1:915; CHECK:       // %bb.0: // %entry916; CHECK-NEXT:    cnot z0.h, p0/m, z0.h917; CHECK-NEXT:    ret918;919; CHECK-2p2-LABEL: test_svcnot_s16_x_1:920; CHECK-2p2:       // %bb.0: // %entry921; CHECK-2p2-NEXT:    cnot z0.h, p0/z, z0.h922; CHECK-2p2-NEXT:    ret923entry:924  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnot.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)925  ret <vscale x 8 x i16> %0926}927 928define <vscale x 8 x i16> @test_svcnot_s16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {929; CHECK-LABEL: test_svcnot_s16_x_2:930; CHECK:       // %bb.0: // %entry931; CHECK-NEXT:    movprfx z0, z1932; CHECK-NEXT:    cnot z0.h, p0/m, z1.h933; CHECK-NEXT:    ret934;935; CHECK-2p2-LABEL: test_svcnot_s16_x_2:936; CHECK-2p2:       // %bb.0: // %entry937; CHECK-2p2-NEXT:    cnot z0.h, p0/z, z1.h938; CHECK-2p2-NEXT:    ret939entry:940  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnot.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)941  ret <vscale x 8 x i16> %0942}943 944define <vscale x 8 x i16> @test_svcnot_s16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {945; SVE-LABEL: test_svcnot_s16_z:946; SVE:       // %bb.0: // %entry947; SVE-NEXT:    movi v0.2d, #0000000000000000948; SVE-NEXT:    cnot z0.h, p0/m, z1.h949; SVE-NEXT:    ret950;951; CHECK-2p2-LABEL: test_svcnot_s16_z:952; CHECK-2p2:       // %bb.0: // %entry953; CHECK-2p2-NEXT:    cnot z0.h, p0/z, z1.h954; CHECK-2p2-NEXT:    ret955;956; STREAMING-SVE-LABEL: test_svcnot_s16_z:957; STREAMING-SVE:       // %bb.0: // %entry958; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x0959; STREAMING-SVE-NEXT:    cnot z0.h, p0/m, z1.h960; STREAMING-SVE-NEXT:    ret961entry:962  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnot.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)963  ret <vscale x 8 x i16> %0964}965 966define <vscale x 4 x i32> @test_svcnot_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) {967; CHECK-LABEL: test_svcnot_s32_x_1:968; CHECK:       // %bb.0: // %entry969; CHECK-NEXT:    cnot z0.s, p0/m, z0.s970; CHECK-NEXT:    ret971;972; CHECK-2p2-LABEL: test_svcnot_s32_x_1:973; CHECK-2p2:       // %bb.0: // %entry974; CHECK-2p2-NEXT:    cnot z0.s, p0/z, z0.s975; CHECK-2p2-NEXT:    ret976entry:977  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnot.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)978  ret <vscale x 4 x i32> %0979}980 981define <vscale x 4 x i32> @test_svcnot_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {982; CHECK-LABEL: test_svcnot_s32_x_2:983; CHECK:       // %bb.0: // %entry984; CHECK-NEXT:    movprfx z0, z1985; CHECK-NEXT:    cnot z0.s, p0/m, z1.s986; CHECK-NEXT:    ret987;988; CHECK-2p2-LABEL: test_svcnot_s32_x_2:989; CHECK-2p2:       // %bb.0: // %entry990; CHECK-2p2-NEXT:    cnot z0.s, p0/z, z1.s991; CHECK-2p2-NEXT:    ret992entry:993  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnot.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)994  ret <vscale x 4 x i32> %0995}996 997define <vscale x 4 x i32> @test_svcnot_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {998; SVE-LABEL: test_svcnot_s32_z:999; SVE:       // %bb.0: // %entry1000; SVE-NEXT:    movi v0.2d, #00000000000000001001; SVE-NEXT:    cnot z0.s, p0/m, z1.s1002; SVE-NEXT:    ret1003;1004; CHECK-2p2-LABEL: test_svcnot_s32_z:1005; CHECK-2p2:       // %bb.0: // %entry1006; CHECK-2p2-NEXT:    cnot z0.s, p0/z, z1.s1007; CHECK-2p2-NEXT:    ret1008;1009; STREAMING-SVE-LABEL: test_svcnot_s32_z:1010; STREAMING-SVE:       // %bb.0: // %entry1011; STREAMING-SVE-NEXT:    mov z0.s, #0 // =0x01012; STREAMING-SVE-NEXT:    cnot z0.s, p0/m, z1.s1013; STREAMING-SVE-NEXT:    ret1014entry:1015  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnot.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1016  ret <vscale x 4 x i32> %01017}1018 1019define <vscale x 2 x i64> @test_svcnot_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) {1020; CHECK-LABEL: test_svcnot_s64_x_1:1021; CHECK:       // %bb.0: // %entry1022; CHECK-NEXT:    cnot z0.d, p0/m, z0.d1023; CHECK-NEXT:    ret1024;1025; CHECK-2p2-LABEL: test_svcnot_s64_x_1:1026; CHECK-2p2:       // %bb.0: // %entry1027; CHECK-2p2-NEXT:    cnot z0.d, p0/z, z0.d1028; CHECK-2p2-NEXT:    ret1029entry:1030  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnot.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1031  ret <vscale x 2 x i64> %01032}1033 1034define <vscale x 2 x i64> @test_svcnot_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {1035; CHECK-LABEL: test_svcnot_s64_x_2:1036; CHECK:       // %bb.0: // %entry1037; CHECK-NEXT:    movprfx z0, z11038; CHECK-NEXT:    cnot z0.d, p0/m, z1.d1039; CHECK-NEXT:    ret1040;1041; CHECK-2p2-LABEL: test_svcnot_s64_x_2:1042; CHECK-2p2:       // %bb.0: // %entry1043; CHECK-2p2-NEXT:    cnot z0.d, p0/z, z1.d1044; CHECK-2p2-NEXT:    ret1045entry:1046  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnot.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1047  ret <vscale x 2 x i64> %01048}1049 1050define <vscale x 2 x i64> @test_svcnot_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {1051; SVE-LABEL: test_svcnot_s64_z:1052; SVE:       // %bb.0: // %entry1053; SVE-NEXT:    movi v0.2d, #00000000000000001054; SVE-NEXT:    cnot z0.d, p0/m, z1.d1055; SVE-NEXT:    ret1056;1057; CHECK-2p2-LABEL: test_svcnot_s64_z:1058; CHECK-2p2:       // %bb.0: // %entry1059; CHECK-2p2-NEXT:    cnot z0.d, p0/z, z1.d1060; CHECK-2p2-NEXT:    ret1061;1062; STREAMING-SVE-LABEL: test_svcnot_s64_z:1063; STREAMING-SVE:       // %bb.0: // %entry1064; STREAMING-SVE-NEXT:    mov z0.d, #0 // =0x01065; STREAMING-SVE-NEXT:    cnot z0.d, p0/m, z1.d1066; STREAMING-SVE-NEXT:    ret1067entry:1068  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnot.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1069  ret <vscale x 2 x i64> %01070}1071 1072define <vscale x 16 x i8> @test_svnot_s8_x_1(<vscale x 16 x i1> %pg, <vscale x 16 x i8> %x) {1073; CHECK-LABEL: test_svnot_s8_x_1:1074; CHECK:       // %bb.0: // %entry1075; CHECK-NEXT:    not z0.b, p0/m, z0.b1076; CHECK-NEXT:    ret1077;1078; CHECK-2p2-LABEL: test_svnot_s8_x_1:1079; CHECK-2p2:       // %bb.0: // %entry1080; CHECK-2p2-NEXT:    not z0.b, p0/z, z0.b1081; CHECK-2p2-NEXT:    ret1082entry:1083  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.not.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1084  ret <vscale x 16 x i8> %01085}1086 1087define <vscale x 16 x i8> @test_svnot_s8_x_2(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {1088; CHECK-LABEL: test_svnot_s8_x_2:1089; CHECK:       // %bb.0: // %entry1090; CHECK-NEXT:    movprfx z0, z11091; CHECK-NEXT:    not z0.b, p0/m, z1.b1092; CHECK-NEXT:    ret1093;1094; CHECK-2p2-LABEL: test_svnot_s8_x_2:1095; CHECK-2p2:       // %bb.0: // %entry1096; CHECK-2p2-NEXT:    not z0.b, p0/z, z1.b1097; CHECK-2p2-NEXT:    ret1098entry:1099  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.not.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1100  ret <vscale x 16 x i8> %01101}1102 1103define <vscale x 16 x i8> @test_svnot_s8_z(<vscale x 16 x i1> %pg, double %z0, <vscale x 16 x i8> %x) {1104; SVE-LABEL: test_svnot_s8_z:1105; SVE:       // %bb.0: // %entry1106; SVE-NEXT:    movi v0.2d, #00000000000000001107; SVE-NEXT:    not z0.b, p0/m, z1.b1108; SVE-NEXT:    ret1109;1110; CHECK-2p2-LABEL: test_svnot_s8_z:1111; CHECK-2p2:       // %bb.0: // %entry1112; CHECK-2p2-NEXT:    not z0.b, p0/z, z1.b1113; CHECK-2p2-NEXT:    ret1114;1115; STREAMING-SVE-LABEL: test_svnot_s8_z:1116; STREAMING-SVE:       // %bb.0: // %entry1117; STREAMING-SVE-NEXT:    mov z0.b, #0 // =0x01118; STREAMING-SVE-NEXT:    not z0.b, p0/m, z1.b1119; STREAMING-SVE-NEXT:    ret1120entry:1121  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.not.nxv16i8(<vscale x 16 x i8> zeroinitializer, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1122  ret <vscale x 16 x i8> %01123}1124 1125define <vscale x 8 x i16> @test_svnot_s16_x_1(<vscale x 8 x i1> %pg, <vscale x 8 x i16> %x) {1126; CHECK-LABEL: test_svnot_s16_x_1:1127; CHECK:       // %bb.0: // %entry1128; CHECK-NEXT:    not z0.h, p0/m, z0.h1129; CHECK-NEXT:    ret1130;1131; CHECK-2p2-LABEL: test_svnot_s16_x_1:1132; CHECK-2p2:       // %bb.0: // %entry1133; CHECK-2p2-NEXT:    not z0.h, p0/z, z0.h1134; CHECK-2p2-NEXT:    ret1135entry:1136  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.not.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1137  ret <vscale x 8 x i16> %01138}1139 1140define <vscale x 8 x i16> @test_svnot_s16_x_2(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {1141; CHECK-LABEL: test_svnot_s16_x_2:1142; CHECK:       // %bb.0: // %entry1143; CHECK-NEXT:    movprfx z0, z11144; CHECK-NEXT:    not z0.h, p0/m, z1.h1145; CHECK-NEXT:    ret1146;1147; CHECK-2p2-LABEL: test_svnot_s16_x_2:1148; CHECK-2p2:       // %bb.0: // %entry1149; CHECK-2p2-NEXT:    not z0.h, p0/z, z1.h1150; CHECK-2p2-NEXT:    ret1151entry:1152  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.not.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1153  ret <vscale x 8 x i16> %01154}1155 1156define <vscale x 8 x i16> @test_svnot_s16_z(<vscale x 8 x i1> %pg, double %z0, <vscale x 8 x i16> %x) {1157; SVE-LABEL: test_svnot_s16_z:1158; SVE:       // %bb.0: // %entry1159; SVE-NEXT:    movi v0.2d, #00000000000000001160; SVE-NEXT:    not z0.h, p0/m, z1.h1161; SVE-NEXT:    ret1162;1163; CHECK-2p2-LABEL: test_svnot_s16_z:1164; CHECK-2p2:       // %bb.0: // %entry1165; CHECK-2p2-NEXT:    not z0.h, p0/z, z1.h1166; CHECK-2p2-NEXT:    ret1167;1168; STREAMING-SVE-LABEL: test_svnot_s16_z:1169; STREAMING-SVE:       // %bb.0: // %entry1170; STREAMING-SVE-NEXT:    mov z0.h, #0 // =0x01171; STREAMING-SVE-NEXT:    not z0.h, p0/m, z1.h1172; STREAMING-SVE-NEXT:    ret1173entry:1174  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.not.nxv8i16(<vscale x 8 x i16> zeroinitializer, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1175  ret <vscale x 8 x i16> %01176}1177 1178define <vscale x 4 x i32> @test_svnot_s32_x_1(<vscale x 4 x i1> %pg, <vscale x 4 x i32> %x) {1179; CHECK-LABEL: test_svnot_s32_x_1:1180; CHECK:       // %bb.0: // %entry1181; CHECK-NEXT:    not z0.s, p0/m, z0.s1182; CHECK-NEXT:    ret1183;1184; CHECK-2p2-LABEL: test_svnot_s32_x_1:1185; CHECK-2p2:       // %bb.0: // %entry1186; CHECK-2p2-NEXT:    not z0.s, p0/z, z0.s1187; CHECK-2p2-NEXT:    ret1188entry:1189  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.not.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1190  ret <vscale x 4 x i32> %01191}1192 1193define <vscale x 4 x i32> @test_svnot_s32_x_2(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {1194; CHECK-LABEL: test_svnot_s32_x_2:1195; CHECK:       // %bb.0: // %entry1196; CHECK-NEXT:    movprfx z0, z11197; CHECK-NEXT:    not z0.s, p0/m, z1.s1198; CHECK-NEXT:    ret1199;1200; CHECK-2p2-LABEL: test_svnot_s32_x_2:1201; CHECK-2p2:       // %bb.0: // %entry1202; CHECK-2p2-NEXT:    not z0.s, p0/z, z1.s1203; CHECK-2p2-NEXT:    ret1204entry:1205  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.not.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1206  ret <vscale x 4 x i32> %01207}1208 1209define <vscale x 4 x i32> @test_svnot_s32_z(<vscale x 4 x i1> %pg, double %z0, <vscale x 4 x i32> %x) {1210; SVE-LABEL: test_svnot_s32_z:1211; SVE:       // %bb.0: // %entry1212; SVE-NEXT:    movi v0.2d, #00000000000000001213; SVE-NEXT:    not z0.s, p0/m, z1.s1214; SVE-NEXT:    ret1215;1216; CHECK-2p2-LABEL: test_svnot_s32_z:1217; CHECK-2p2:       // %bb.0: // %entry1218; CHECK-2p2-NEXT:    not z0.s, p0/z, z1.s1219; CHECK-2p2-NEXT:    ret1220;1221; STREAMING-SVE-LABEL: test_svnot_s32_z:1222; STREAMING-SVE:       // %bb.0: // %entry1223; STREAMING-SVE-NEXT:    mov z0.s, #0 // =0x01224; STREAMING-SVE-NEXT:    not z0.s, p0/m, z1.s1225; STREAMING-SVE-NEXT:    ret1226entry:1227  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.not.nxv4i32(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1228  ret <vscale x 4 x i32> %01229}1230 1231define <vscale x 2 x i64> @test_svnot_s64_x_1(<vscale x 2 x i1> %pg, <vscale x 2 x i64> %x) {1232; CHECK-LABEL: test_svnot_s64_x_1:1233; CHECK:       // %bb.0: // %entry1234; CHECK-NEXT:    not z0.d, p0/m, z0.d1235; CHECK-NEXT:    ret1236;1237; CHECK-2p2-LABEL: test_svnot_s64_x_1:1238; CHECK-2p2:       // %bb.0: // %entry1239; CHECK-2p2-NEXT:    not z0.d, p0/z, z0.d1240; CHECK-2p2-NEXT:    ret1241entry:1242  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.not.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1243  ret <vscale x 2 x i64> %01244}1245 1246define <vscale x 2 x i64> @test_svnot_s64_x_2(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {1247; CHECK-LABEL: test_svnot_s64_x_2:1248; CHECK:       // %bb.0: // %entry1249; CHECK-NEXT:    movprfx z0, z11250; CHECK-NEXT:    not z0.d, p0/m, z1.d1251; CHECK-NEXT:    ret1252;1253; CHECK-2p2-LABEL: test_svnot_s64_x_2:1254; CHECK-2p2:       // %bb.0: // %entry1255; CHECK-2p2-NEXT:    not z0.d, p0/z, z1.d1256; CHECK-2p2-NEXT:    ret1257entry:1258  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.not.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1259  ret <vscale x 2 x i64> %01260}1261 1262define <vscale x 2 x i64> @test_svnot_s64_z(<vscale x 2 x i1> %pg, double %z0, <vscale x 2 x i64> %x) {1263; SVE-LABEL: test_svnot_s64_z:1264; SVE:       // %bb.0: // %entry1265; SVE-NEXT:    movi v0.2d, #00000000000000001266; SVE-NEXT:    not z0.d, p0/m, z1.d1267; SVE-NEXT:    ret1268;1269; CHECK-2p2-LABEL: test_svnot_s64_z:1270; CHECK-2p2:       // %bb.0: // %entry1271; CHECK-2p2-NEXT:    not z0.d, p0/z, z1.d1272; CHECK-2p2-NEXT:    ret1273;1274; STREAMING-SVE-LABEL: test_svnot_s64_z:1275; STREAMING-SVE:       // %bb.0: // %entry1276; STREAMING-SVE-NEXT:    mov z0.d, #0 // =0x01277; STREAMING-SVE-NEXT:    not z0.d, p0/m, z1.d1278; STREAMING-SVE-NEXT:    ret1279entry:1280  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.not.nxv2i64(<vscale x 2 x i64> zeroinitializer, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1281  ret <vscale x 2 x i64> %01282}1283 1284define <vscale x 16 x i8> @test_svcls_nxv16i8_ptrue_u(double %z0, <vscale x 16 x i8> %x) {1285; CHECK-LABEL: test_svcls_nxv16i8_ptrue_u:1286; CHECK:       // %bb.0: // %entry1287; CHECK-NEXT:    ptrue p0.b1288; CHECK-NEXT:    movprfx z0, z11289; CHECK-NEXT:    cls z0.b, p0/m, z1.b1290; CHECK-NEXT:    ret1291;1292; CHECK-2p2-LABEL: test_svcls_nxv16i8_ptrue_u:1293; CHECK-2p2:       // %bb.0: // %entry1294; CHECK-2p2-NEXT:    ptrue p0.b1295; CHECK-2p2-NEXT:    cls z0.b, p0/z, z1.b1296; CHECK-2p2-NEXT:    ret1297entry:1298  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1299  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cls.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1300  ret <vscale x 16 x i8> %01301}1302 1303define <vscale x 16 x i8> @test_svcls_nxv16i8_ptrue(double %z0, <vscale x 16 x i8> %x, <vscale x 16 x i8> %y) {1304; CHECK-LABEL: test_svcls_nxv16i8_ptrue:1305; CHECK:       // %bb.0: // %entry1306; CHECK-NEXT:    ptrue p0.b1307; CHECK-NEXT:    movprfx z0, z21308; CHECK-NEXT:    cls z0.b, p0/m, z2.b1309; CHECK-NEXT:    ret1310;1311; CHECK-2p2-LABEL: test_svcls_nxv16i8_ptrue:1312; CHECK-2p2:       // %bb.0: // %entry1313; CHECK-2p2-NEXT:    ptrue p0.b1314; CHECK-2p2-NEXT:    cls z0.b, p0/z, z2.b1315; CHECK-2p2-NEXT:    ret1316entry:1317  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1318  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cls.nxv16i8(<vscale x 16 x i8> %x, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %y)1319  ret <vscale x 16 x i8> %01320}1321 1322define <vscale x 8 x i16> @test_svcls_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) {1323; CHECK-LABEL: test_svcls_nxv8i16_ptrue_u:1324; CHECK:       // %bb.0: // %entry1325; CHECK-NEXT:    ptrue p0.h1326; CHECK-NEXT:    movprfx z0, z11327; CHECK-NEXT:    cls z0.h, p0/m, z1.h1328; CHECK-NEXT:    ret1329;1330; CHECK-2p2-LABEL: test_svcls_nxv8i16_ptrue_u:1331; CHECK-2p2:       // %bb.0: // %entry1332; CHECK-2p2-NEXT:    ptrue p0.h1333; CHECK-2p2-NEXT:    cls z0.h, p0/z, z1.h1334; CHECK-2p2-NEXT:    ret1335entry:1336  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1337  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cls.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1338  ret <vscale x 8 x i16> %01339}1340 1341define <vscale x 8 x i16> @test_svcls_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) {1342; CHECK-LABEL: test_svcls_nxv8i16_ptrue:1343; CHECK:       // %bb.0: // %entry1344; CHECK-NEXT:    ptrue p0.h1345; CHECK-NEXT:    movprfx z0, z21346; CHECK-NEXT:    cls z0.h, p0/m, z2.h1347; CHECK-NEXT:    ret1348;1349; CHECK-2p2-LABEL: test_svcls_nxv8i16_ptrue:1350; CHECK-2p2:       // %bb.0: // %entry1351; CHECK-2p2-NEXT:    ptrue p0.h1352; CHECK-2p2-NEXT:    cls z0.h, p0/z, z2.h1353; CHECK-2p2-NEXT:    ret1354entry:1355  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1356  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cls.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y)1357  ret <vscale x 8 x i16> %01358}1359 1360define <vscale x 4 x i32> @test_svcls_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) {1361; CHECK-LABEL: test_svcls_nxv4i32_ptrue_u:1362; CHECK:       // %bb.0: // %entry1363; CHECK-NEXT:    ptrue p0.s1364; CHECK-NEXT:    movprfx z0, z11365; CHECK-NEXT:    cls z0.s, p0/m, z1.s1366; CHECK-NEXT:    ret1367;1368; CHECK-2p2-LABEL: test_svcls_nxv4i32_ptrue_u:1369; CHECK-2p2:       // %bb.0: // %entry1370; CHECK-2p2-NEXT:    ptrue p0.s1371; CHECK-2p2-NEXT:    cls z0.s, p0/z, z1.s1372; CHECK-2p2-NEXT:    ret1373entry:1374  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1375  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cls.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1376  ret <vscale x 4 x i32> %01377}1378 1379define <vscale x 4 x i32> @test_svcls_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) {1380; CHECK-LABEL: test_svcls_nxv4i32_ptrue:1381; CHECK:       // %bb.0: // %entry1382; CHECK-NEXT:    ptrue p0.s1383; CHECK-NEXT:    movprfx z0, z21384; CHECK-NEXT:    cls z0.s, p0/m, z2.s1385; CHECK-NEXT:    ret1386;1387; CHECK-2p2-LABEL: test_svcls_nxv4i32_ptrue:1388; CHECK-2p2:       // %bb.0: // %entry1389; CHECK-2p2-NEXT:    ptrue p0.s1390; CHECK-2p2-NEXT:    cls z0.s, p0/z, z2.s1391; CHECK-2p2-NEXT:    ret1392entry:1393  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1394  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cls.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y)1395  ret <vscale x 4 x i32> %01396}1397 1398define <vscale x 2 x i64> @test_svcls_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) {1399; CHECK-LABEL: test_svcls_nxv2i64_ptrue_u:1400; CHECK:       // %bb.0: // %entry1401; CHECK-NEXT:    ptrue p0.d1402; CHECK-NEXT:    movprfx z0, z11403; CHECK-NEXT:    cls z0.d, p0/m, z1.d1404; CHECK-NEXT:    ret1405;1406; CHECK-2p2-LABEL: test_svcls_nxv2i64_ptrue_u:1407; CHECK-2p2:       // %bb.0: // %entry1408; CHECK-2p2-NEXT:    ptrue p0.d1409; CHECK-2p2-NEXT:    cls z0.d, p0/z, z1.d1410; CHECK-2p2-NEXT:    ret1411entry:1412  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1413  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cls.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1414  ret <vscale x 2 x i64> %01415}1416 1417define <vscale x 2 x i64> @test_svcls_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) {1418; CHECK-LABEL: test_svcls_nxv2i64_ptrue:1419; CHECK:       // %bb.0: // %entry1420; CHECK-NEXT:    ptrue p0.d1421; CHECK-NEXT:    movprfx z0, z21422; CHECK-NEXT:    cls z0.d, p0/m, z2.d1423; CHECK-NEXT:    ret1424;1425; CHECK-2p2-LABEL: test_svcls_nxv2i64_ptrue:1426; CHECK-2p2:       // %bb.0: // %entry1427; CHECK-2p2-NEXT:    ptrue p0.d1428; CHECK-2p2-NEXT:    cls z0.d, p0/z, z2.d1429; CHECK-2p2-NEXT:    ret1430entry:1431  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1432  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cls.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y)1433  ret <vscale x 2 x i64> %01434}1435 1436define <vscale x 16 x i8> @test_svclz_nxv16i8_ptrue_u(double %z0, <vscale x 16 x i8> %x) {1437; CHECK-LABEL: test_svclz_nxv16i8_ptrue_u:1438; CHECK:       // %bb.0: // %entry1439; CHECK-NEXT:    ptrue p0.b1440; CHECK-NEXT:    movprfx z0, z11441; CHECK-NEXT:    clz z0.b, p0/m, z1.b1442; CHECK-NEXT:    ret1443;1444; CHECK-2p2-LABEL: test_svclz_nxv16i8_ptrue_u:1445; CHECK-2p2:       // %bb.0: // %entry1446; CHECK-2p2-NEXT:    ptrue p0.b1447; CHECK-2p2-NEXT:    clz z0.b, p0/z, z1.b1448; CHECK-2p2-NEXT:    ret1449entry:1450  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1451  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.clz.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1452  ret <vscale x 16 x i8> %01453}1454 1455define <vscale x 16 x i8> @test_svclz_nxv16i8_ptrue(double %z0, <vscale x 16 x i8> %x, <vscale x 16 x i8> %y) {1456; CHECK-LABEL: test_svclz_nxv16i8_ptrue:1457; CHECK:       // %bb.0: // %entry1458; CHECK-NEXT:    ptrue p0.b1459; CHECK-NEXT:    movprfx z0, z21460; CHECK-NEXT:    clz z0.b, p0/m, z2.b1461; CHECK-NEXT:    ret1462;1463; CHECK-2p2-LABEL: test_svclz_nxv16i8_ptrue:1464; CHECK-2p2:       // %bb.0: // %entry1465; CHECK-2p2-NEXT:    ptrue p0.b1466; CHECK-2p2-NEXT:    clz z0.b, p0/z, z2.b1467; CHECK-2p2-NEXT:    ret1468entry:1469  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1470  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.clz.nxv16i8(<vscale x 16 x i8> %x, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %y)1471  ret <vscale x 16 x i8> %01472}1473 1474define <vscale x 8 x i16> @test_svclz_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) {1475; CHECK-LABEL: test_svclz_nxv8i16_ptrue_u:1476; CHECK:       // %bb.0: // %entry1477; CHECK-NEXT:    ptrue p0.h1478; CHECK-NEXT:    movprfx z0, z11479; CHECK-NEXT:    clz z0.h, p0/m, z1.h1480; CHECK-NEXT:    ret1481;1482; CHECK-2p2-LABEL: test_svclz_nxv8i16_ptrue_u:1483; CHECK-2p2:       // %bb.0: // %entry1484; CHECK-2p2-NEXT:    ptrue p0.h1485; CHECK-2p2-NEXT:    clz z0.h, p0/z, z1.h1486; CHECK-2p2-NEXT:    ret1487entry:1488  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1489  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.clz.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1490  ret <vscale x 8 x i16> %01491}1492 1493define <vscale x 8 x i16> @test_svclz_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) {1494; CHECK-LABEL: test_svclz_nxv8i16_ptrue:1495; CHECK:       // %bb.0: // %entry1496; CHECK-NEXT:    ptrue p0.h1497; CHECK-NEXT:    movprfx z0, z21498; CHECK-NEXT:    clz z0.h, p0/m, z2.h1499; CHECK-NEXT:    ret1500;1501; CHECK-2p2-LABEL: test_svclz_nxv8i16_ptrue:1502; CHECK-2p2:       // %bb.0: // %entry1503; CHECK-2p2-NEXT:    ptrue p0.h1504; CHECK-2p2-NEXT:    clz z0.h, p0/z, z2.h1505; CHECK-2p2-NEXT:    ret1506entry:1507  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1508  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.clz.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y)1509  ret <vscale x 8 x i16> %01510}1511 1512define <vscale x 4 x i32> @test_svclz_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) {1513; CHECK-LABEL: test_svclz_nxv4i32_ptrue_u:1514; CHECK:       // %bb.0: // %entry1515; CHECK-NEXT:    ptrue p0.s1516; CHECK-NEXT:    movprfx z0, z11517; CHECK-NEXT:    clz z0.s, p0/m, z1.s1518; CHECK-NEXT:    ret1519;1520; CHECK-2p2-LABEL: test_svclz_nxv4i32_ptrue_u:1521; CHECK-2p2:       // %bb.0: // %entry1522; CHECK-2p2-NEXT:    ptrue p0.s1523; CHECK-2p2-NEXT:    clz z0.s, p0/z, z1.s1524; CHECK-2p2-NEXT:    ret1525entry:1526  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1527  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.clz.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1528  ret <vscale x 4 x i32> %01529}1530 1531define <vscale x 4 x i32> @test_svclz_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) {1532; CHECK-LABEL: test_svclz_nxv4i32_ptrue:1533; CHECK:       // %bb.0: // %entry1534; CHECK-NEXT:    ptrue p0.s1535; CHECK-NEXT:    movprfx z0, z21536; CHECK-NEXT:    clz z0.s, p0/m, z2.s1537; CHECK-NEXT:    ret1538;1539; CHECK-2p2-LABEL: test_svclz_nxv4i32_ptrue:1540; CHECK-2p2:       // %bb.0: // %entry1541; CHECK-2p2-NEXT:    ptrue p0.s1542; CHECK-2p2-NEXT:    clz z0.s, p0/z, z2.s1543; CHECK-2p2-NEXT:    ret1544entry:1545  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1546  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.clz.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y)1547  ret <vscale x 4 x i32> %01548}1549 1550define <vscale x 2 x i64> @test_svclz_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) {1551; CHECK-LABEL: test_svclz_nxv2i64_ptrue_u:1552; CHECK:       // %bb.0: // %entry1553; CHECK-NEXT:    ptrue p0.d1554; CHECK-NEXT:    movprfx z0, z11555; CHECK-NEXT:    clz z0.d, p0/m, z1.d1556; CHECK-NEXT:    ret1557;1558; CHECK-2p2-LABEL: test_svclz_nxv2i64_ptrue_u:1559; CHECK-2p2:       // %bb.0: // %entry1560; CHECK-2p2-NEXT:    ptrue p0.d1561; CHECK-2p2-NEXT:    clz z0.d, p0/z, z1.d1562; CHECK-2p2-NEXT:    ret1563entry:1564  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1565  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.clz.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1566  ret <vscale x 2 x i64> %01567}1568 1569define <vscale x 2 x i64> @test_svclz_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) {1570; CHECK-LABEL: test_svclz_nxv2i64_ptrue:1571; CHECK:       // %bb.0: // %entry1572; CHECK-NEXT:    ptrue p0.d1573; CHECK-NEXT:    movprfx z0, z21574; CHECK-NEXT:    clz z0.d, p0/m, z2.d1575; CHECK-NEXT:    ret1576;1577; CHECK-2p2-LABEL: test_svclz_nxv2i64_ptrue:1578; CHECK-2p2:       // %bb.0: // %entry1579; CHECK-2p2-NEXT:    ptrue p0.d1580; CHECK-2p2-NEXT:    clz z0.d, p0/z, z2.d1581; CHECK-2p2-NEXT:    ret1582entry:1583  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1584  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.clz.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y)1585  ret <vscale x 2 x i64> %01586}1587 1588define <vscale x 16 x i8> @test_svcnt_nxv16i8_ptrue_u(double %z0, <vscale x 16 x i8> %x) {1589; CHECK-LABEL: test_svcnt_nxv16i8_ptrue_u:1590; CHECK:       // %bb.0: // %entry1591; CHECK-NEXT:    ptrue p0.b1592; CHECK-NEXT:    movprfx z0, z11593; CHECK-NEXT:    cnt z0.b, p0/m, z1.b1594; CHECK-NEXT:    ret1595;1596; CHECK-2p2-LABEL: test_svcnt_nxv16i8_ptrue_u:1597; CHECK-2p2:       // %bb.0: // %entry1598; CHECK-2p2-NEXT:    ptrue p0.b1599; CHECK-2p2-NEXT:    cnt z0.b, p0/z, z1.b1600; CHECK-2p2-NEXT:    ret1601entry:1602  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1603  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnt.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1604  ret <vscale x 16 x i8> %01605}1606 1607define <vscale x 16 x i8> @test_svcnt_nxv16i8_ptrue(double %z0, <vscale x 16 x i8> %x, <vscale x 16 x i8> %y) {1608; CHECK-LABEL: test_svcnt_nxv16i8_ptrue:1609; CHECK:       // %bb.0: // %entry1610; CHECK-NEXT:    ptrue p0.b1611; CHECK-NEXT:    movprfx z0, z21612; CHECK-NEXT:    cnt z0.b, p0/m, z2.b1613; CHECK-NEXT:    ret1614;1615; CHECK-2p2-LABEL: test_svcnt_nxv16i8_ptrue:1616; CHECK-2p2:       // %bb.0: // %entry1617; CHECK-2p2-NEXT:    ptrue p0.b1618; CHECK-2p2-NEXT:    cnt z0.b, p0/z, z2.b1619; CHECK-2p2-NEXT:    ret1620entry:1621  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1622  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnt.nxv16i8(<vscale x 16 x i8> %x, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %y)1623  ret <vscale x 16 x i8> %01624}1625 1626define <vscale x 8 x i16> @test_svcnt_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) {1627; CHECK-LABEL: test_svcnt_nxv8i16_ptrue_u:1628; CHECK:       // %bb.0: // %entry1629; CHECK-NEXT:    ptrue p0.h1630; CHECK-NEXT:    movprfx z0, z11631; CHECK-NEXT:    cnt z0.h, p0/m, z1.h1632; CHECK-NEXT:    ret1633;1634; CHECK-2p2-LABEL: test_svcnt_nxv8i16_ptrue_u:1635; CHECK-2p2:       // %bb.0: // %entry1636; CHECK-2p2-NEXT:    ptrue p0.h1637; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h1638; CHECK-2p2-NEXT:    ret1639entry:1640  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1641  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1642  ret <vscale x 8 x i16> %01643}1644 1645define <vscale x 8 x i16> @test_svcnt_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) {1646; CHECK-LABEL: test_svcnt_nxv8i16_ptrue:1647; CHECK:       // %bb.0: // %entry1648; CHECK-NEXT:    ptrue p0.h1649; CHECK-NEXT:    movprfx z0, z21650; CHECK-NEXT:    cnt z0.h, p0/m, z2.h1651; CHECK-NEXT:    ret1652;1653; CHECK-2p2-LABEL: test_svcnt_nxv8i16_ptrue:1654; CHECK-2p2:       // %bb.0: // %entry1655; CHECK-2p2-NEXT:    ptrue p0.h1656; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z2.h1657; CHECK-2p2-NEXT:    ret1658entry:1659  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1660  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y)1661  ret <vscale x 8 x i16> %01662}1663 1664define <vscale x 4 x i32> @test_svcnt_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) {1665; CHECK-LABEL: test_svcnt_nxv4i32_ptrue_u:1666; CHECK:       // %bb.0: // %entry1667; CHECK-NEXT:    ptrue p0.s1668; CHECK-NEXT:    movprfx z0, z11669; CHECK-NEXT:    cnt z0.s, p0/m, z1.s1670; CHECK-NEXT:    ret1671;1672; CHECK-2p2-LABEL: test_svcnt_nxv4i32_ptrue_u:1673; CHECK-2p2:       // %bb.0: // %entry1674; CHECK-2p2-NEXT:    ptrue p0.s1675; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z1.s1676; CHECK-2p2-NEXT:    ret1677entry:1678  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1679  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1680  ret <vscale x 4 x i32> %01681}1682 1683define <vscale x 4 x i32> @test_svcnt_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) {1684; CHECK-LABEL: test_svcnt_nxv4i32_ptrue:1685; CHECK:       // %bb.0: // %entry1686; CHECK-NEXT:    ptrue p0.s1687; CHECK-NEXT:    movprfx z0, z21688; CHECK-NEXT:    cnt z0.s, p0/m, z2.s1689; CHECK-NEXT:    ret1690;1691; CHECK-2p2-LABEL: test_svcnt_nxv4i32_ptrue:1692; CHECK-2p2:       // %bb.0: // %entry1693; CHECK-2p2-NEXT:    ptrue p0.s1694; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z2.s1695; CHECK-2p2-NEXT:    ret1696entry:1697  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1698  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y)1699  ret <vscale x 4 x i32> %01700}1701 1702define <vscale x 2 x i64> @test_svcnt_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) {1703; CHECK-LABEL: test_svcnt_nxv2i64_ptrue_u:1704; CHECK:       // %bb.0: // %entry1705; CHECK-NEXT:    ptrue p0.d1706; CHECK-NEXT:    movprfx z0, z11707; CHECK-NEXT:    cnt z0.d, p0/m, z1.d1708; CHECK-NEXT:    ret1709;1710; CHECK-2p2-LABEL: test_svcnt_nxv2i64_ptrue_u:1711; CHECK-2p2:       // %bb.0: // %entry1712; CHECK-2p2-NEXT:    ptrue p0.d1713; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z1.d1714; CHECK-2p2-NEXT:    ret1715entry:1716  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1717  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)1718  ret <vscale x 2 x i64> %01719}1720 1721define <vscale x 2 x i64> @test_svcnt_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) {1722; CHECK-LABEL: test_svcnt_nxv2i64_ptrue:1723; CHECK:       // %bb.0: // %entry1724; CHECK-NEXT:    ptrue p0.d1725; CHECK-NEXT:    movprfx z0, z21726; CHECK-NEXT:    cnt z0.d, p0/m, z2.d1727; CHECK-NEXT:    ret1728;1729; CHECK-2p2-LABEL: test_svcnt_nxv2i64_ptrue:1730; CHECK-2p2:       // %bb.0: // %entry1731; CHECK-2p2-NEXT:    ptrue p0.d1732; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z2.d1733; CHECK-2p2-NEXT:    ret1734entry:1735  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1736  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y)1737  ret <vscale x 2 x i64> %01738}1739 1740define <vscale x 8 x i16> @test_svcnt_nxv8f16_ptrue_u(double %z0, <vscale x 8 x half> %x) {1741; CHECK-LABEL: test_svcnt_nxv8f16_ptrue_u:1742; CHECK:       // %bb.0: // %entry1743; CHECK-NEXT:    ptrue p0.h1744; CHECK-NEXT:    movprfx z0, z11745; CHECK-NEXT:    cnt z0.h, p0/m, z1.h1746; CHECK-NEXT:    ret1747;1748; CHECK-2p2-LABEL: test_svcnt_nxv8f16_ptrue_u:1749; CHECK-2p2:       // %bb.0: // %entry1750; CHECK-2p2-NEXT:    ptrue p0.h1751; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h1752; CHECK-2p2-NEXT:    ret1753entry:1754  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1755  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8f16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x half> %x)1756  ret <vscale x 8 x i16> %01757}1758 1759define <vscale x 8 x i16> @test_svcnt_nxv8f16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x half> %y) {1760; CHECK-LABEL: test_svcnt_nxv8f16_ptrue:1761; CHECK:       // %bb.0: // %entry1762; CHECK-NEXT:    ptrue p0.h1763; CHECK-NEXT:    movprfx z0, z21764; CHECK-NEXT:    cnt z0.h, p0/m, z2.h1765; CHECK-NEXT:    ret1766;1767; CHECK-2p2-LABEL: test_svcnt_nxv8f16_ptrue:1768; CHECK-2p2:       // %bb.0: // %entry1769; CHECK-2p2-NEXT:    ptrue p0.h1770; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z2.h1771; CHECK-2p2-NEXT:    ret1772entry:1773  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1774  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8f16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x half> %y)1775  ret <vscale x 8 x i16> %01776}1777 1778define <vscale x 8 x i16> @test_svcnt_nxv8bf16_ptrue_u(double %z0, <vscale x 8 x bfloat> %x) {1779; CHECK-LABEL: test_svcnt_nxv8bf16_ptrue_u:1780; CHECK:       // %bb.0: // %entry1781; CHECK-NEXT:    ptrue p0.h1782; CHECK-NEXT:    movprfx z0, z11783; CHECK-NEXT:    cnt z0.h, p0/m, z1.h1784; CHECK-NEXT:    ret1785;1786; CHECK-2p2-LABEL: test_svcnt_nxv8bf16_ptrue_u:1787; CHECK-2p2:       // %bb.0: // %entry1788; CHECK-2p2-NEXT:    ptrue p0.h1789; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z1.h1790; CHECK-2p2-NEXT:    ret1791entry:1792  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1793  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8bf16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x bfloat> %x)1794  ret <vscale x 8 x i16> %01795}1796 1797define <vscale x 8 x i16> @test_svcnt_nxv8bf16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x bfloat> %y) {1798; CHECK-LABEL: test_svcnt_nxv8bf16_ptrue:1799; CHECK:       // %bb.0: // %entry1800; CHECK-NEXT:    ptrue p0.h1801; CHECK-NEXT:    movprfx z0, z21802; CHECK-NEXT:    cnt z0.h, p0/m, z2.h1803; CHECK-NEXT:    ret1804;1805; CHECK-2p2-LABEL: test_svcnt_nxv8bf16_ptrue:1806; CHECK-2p2:       // %bb.0: // %entry1807; CHECK-2p2-NEXT:    ptrue p0.h1808; CHECK-2p2-NEXT:    cnt z0.h, p0/z, z2.h1809; CHECK-2p2-NEXT:    ret1810entry:1811  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1812  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnt.nxv8bf16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x bfloat> %y)1813  ret <vscale x 8 x i16> %01814}1815 1816define <vscale x 4 x i32> @test_svcnt_nxv4f32_ptrue_u(double %z0, <vscale x 4 x float> %x) {1817; CHECK-LABEL: test_svcnt_nxv4f32_ptrue_u:1818; CHECK:       // %bb.0: // %entry1819; CHECK-NEXT:    ptrue p0.s1820; CHECK-NEXT:    movprfx z0, z11821; CHECK-NEXT:    cnt z0.s, p0/m, z1.s1822; CHECK-NEXT:    ret1823;1824; CHECK-2p2-LABEL: test_svcnt_nxv4f32_ptrue_u:1825; CHECK-2p2:       // %bb.0: // %entry1826; CHECK-2p2-NEXT:    ptrue p0.s1827; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z1.s1828; CHECK-2p2-NEXT:    ret1829entry:1830  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1831  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4f32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x float> %x)1832  ret <vscale x 4 x i32> %01833}1834 1835define <vscale x 4 x i32> @test_svcnt_nxv4f32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x float> %y) {1836; CHECK-LABEL: test_svcnt_nxv4f32_ptrue:1837; CHECK:       // %bb.0: // %entry1838; CHECK-NEXT:    ptrue p0.s1839; CHECK-NEXT:    movprfx z0, z21840; CHECK-NEXT:    cnt z0.s, p0/m, z2.s1841; CHECK-NEXT:    ret1842;1843; CHECK-2p2-LABEL: test_svcnt_nxv4f32_ptrue:1844; CHECK-2p2:       // %bb.0: // %entry1845; CHECK-2p2-NEXT:    ptrue p0.s1846; CHECK-2p2-NEXT:    cnt z0.s, p0/z, z2.s1847; CHECK-2p2-NEXT:    ret1848entry:1849  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1850  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnt.nxv4f32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x float> %y)1851  ret <vscale x 4 x i32> %01852}1853 1854define <vscale x 2 x i64> @test_svcnt_nxv2f64_ptrue_u(double %z0, <vscale x 2 x double> %x) {1855; CHECK-LABEL: test_svcnt_nxv2f64_ptrue_u:1856; CHECK:       // %bb.0: // %entry1857; CHECK-NEXT:    ptrue p0.d1858; CHECK-NEXT:    movprfx z0, z11859; CHECK-NEXT:    cnt z0.d, p0/m, z1.d1860; CHECK-NEXT:    ret1861;1862; CHECK-2p2-LABEL: test_svcnt_nxv2f64_ptrue_u:1863; CHECK-2p2:       // %bb.0: // %entry1864; CHECK-2p2-NEXT:    ptrue p0.d1865; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z1.d1866; CHECK-2p2-NEXT:    ret1867entry:1868  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1869  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2f64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x double> %x)1870  ret <vscale x 2 x i64> %01871}1872 1873define <vscale x 2 x i64> @test_svcnt_nxv2f64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x double> %y) {1874; CHECK-LABEL: test_svcnt_nxv2f64_ptrue:1875; CHECK:       // %bb.0: // %entry1876; CHECK-NEXT:    ptrue p0.d1877; CHECK-NEXT:    movprfx z0, z21878; CHECK-NEXT:    cnt z0.d, p0/m, z2.d1879; CHECK-NEXT:    ret1880;1881; CHECK-2p2-LABEL: test_svcnt_nxv2f64_ptrue:1882; CHECK-2p2:       // %bb.0: // %entry1883; CHECK-2p2-NEXT:    ptrue p0.d1884; CHECK-2p2-NEXT:    cnt z0.d, p0/z, z2.d1885; CHECK-2p2-NEXT:    ret1886entry:1887  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)1888  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnt.nxv2f64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x double> %y)1889  ret <vscale x 2 x i64> %01890}1891 1892define <vscale x 16 x i8> @test_svcnot_nxv16i8_ptrue_u(double %z0, <vscale x 16 x i8> %x) {1893; CHECK-LABEL: test_svcnot_nxv16i8_ptrue_u:1894; CHECK:       // %bb.0: // %entry1895; CHECK-NEXT:    ptrue p0.b1896; CHECK-NEXT:    movprfx z0, z11897; CHECK-NEXT:    cnot z0.b, p0/m, z1.b1898; CHECK-NEXT:    ret1899;1900; CHECK-2p2-LABEL: test_svcnot_nxv16i8_ptrue_u:1901; CHECK-2p2:       // %bb.0: // %entry1902; CHECK-2p2-NEXT:    ptrue p0.b1903; CHECK-2p2-NEXT:    cnot z0.b, p0/z, z1.b1904; CHECK-2p2-NEXT:    ret1905entry:1906  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1907  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnot.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)1908  ret <vscale x 16 x i8> %01909}1910 1911define <vscale x 16 x i8> @test_svcnot_nxv16i8_ptrue(double %z0, <vscale x 16 x i8> %x, <vscale x 16 x i8> %y) {1912; CHECK-LABEL: test_svcnot_nxv16i8_ptrue:1913; CHECK:       // %bb.0: // %entry1914; CHECK-NEXT:    ptrue p0.b1915; CHECK-NEXT:    movprfx z0, z21916; CHECK-NEXT:    cnot z0.b, p0/m, z2.b1917; CHECK-NEXT:    ret1918;1919; CHECK-2p2-LABEL: test_svcnot_nxv16i8_ptrue:1920; CHECK-2p2:       // %bb.0: // %entry1921; CHECK-2p2-NEXT:    ptrue p0.b1922; CHECK-2p2-NEXT:    cnot z0.b, p0/z, z2.b1923; CHECK-2p2-NEXT:    ret1924entry:1925  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)1926  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.cnot.nxv16i8(<vscale x 16 x i8> %x, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %y)1927  ret <vscale x 16 x i8> %01928}1929 1930define <vscale x 8 x i16> @test_svcnot_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) {1931; CHECK-LABEL: test_svcnot_nxv8i16_ptrue_u:1932; CHECK:       // %bb.0: // %entry1933; CHECK-NEXT:    ptrue p0.h1934; CHECK-NEXT:    movprfx z0, z11935; CHECK-NEXT:    cnot z0.h, p0/m, z1.h1936; CHECK-NEXT:    ret1937;1938; CHECK-2p2-LABEL: test_svcnot_nxv8i16_ptrue_u:1939; CHECK-2p2:       // %bb.0: // %entry1940; CHECK-2p2-NEXT:    ptrue p0.h1941; CHECK-2p2-NEXT:    cnot z0.h, p0/z, z1.h1942; CHECK-2p2-NEXT:    ret1943entry:1944  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1945  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnot.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)1946  ret <vscale x 8 x i16> %01947}1948 1949define <vscale x 8 x i16> @test_svcnot_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) {1950; CHECK-LABEL: test_svcnot_nxv8i16_ptrue:1951; CHECK:       // %bb.0: // %entry1952; CHECK-NEXT:    ptrue p0.h1953; CHECK-NEXT:    movprfx z0, z21954; CHECK-NEXT:    cnot z0.h, p0/m, z2.h1955; CHECK-NEXT:    ret1956;1957; CHECK-2p2-LABEL: test_svcnot_nxv8i16_ptrue:1958; CHECK-2p2:       // %bb.0: // %entry1959; CHECK-2p2-NEXT:    ptrue p0.h1960; CHECK-2p2-NEXT:    cnot z0.h, p0/z, z2.h1961; CHECK-2p2-NEXT:    ret1962entry:1963  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)1964  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.cnot.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y)1965  ret <vscale x 8 x i16> %01966}1967 1968define <vscale x 4 x i32> @test_svcnot_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) {1969; CHECK-LABEL: test_svcnot_nxv4i32_ptrue_u:1970; CHECK:       // %bb.0: // %entry1971; CHECK-NEXT:    ptrue p0.s1972; CHECK-NEXT:    movprfx z0, z11973; CHECK-NEXT:    cnot z0.s, p0/m, z1.s1974; CHECK-NEXT:    ret1975;1976; CHECK-2p2-LABEL: test_svcnot_nxv4i32_ptrue_u:1977; CHECK-2p2:       // %bb.0: // %entry1978; CHECK-2p2-NEXT:    ptrue p0.s1979; CHECK-2p2-NEXT:    cnot z0.s, p0/z, z1.s1980; CHECK-2p2-NEXT:    ret1981entry:1982  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)1983  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnot.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)1984  ret <vscale x 4 x i32> %01985}1986 1987define <vscale x 4 x i32> @test_svcnot_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) {1988; CHECK-LABEL: test_svcnot_nxv4i32_ptrue:1989; CHECK:       // %bb.0: // %entry1990; CHECK-NEXT:    ptrue p0.s1991; CHECK-NEXT:    movprfx z0, z21992; CHECK-NEXT:    cnot z0.s, p0/m, z2.s1993; CHECK-NEXT:    ret1994;1995; CHECK-2p2-LABEL: test_svcnot_nxv4i32_ptrue:1996; CHECK-2p2:       // %bb.0: // %entry1997; CHECK-2p2-NEXT:    ptrue p0.s1998; CHECK-2p2-NEXT:    cnot z0.s, p0/z, z2.s1999; CHECK-2p2-NEXT:    ret2000entry:2001  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)2002  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.cnot.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y)2003  ret <vscale x 4 x i32> %02004}2005 2006define <vscale x 2 x i64> @test_svcnot_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) {2007; CHECK-LABEL: test_svcnot_nxv2i64_ptrue_u:2008; CHECK:       // %bb.0: // %entry2009; CHECK-NEXT:    ptrue p0.d2010; CHECK-NEXT:    movprfx z0, z12011; CHECK-NEXT:    cnot z0.d, p0/m, z1.d2012; CHECK-NEXT:    ret2013;2014; CHECK-2p2-LABEL: test_svcnot_nxv2i64_ptrue_u:2015; CHECK-2p2:       // %bb.0: // %entry2016; CHECK-2p2-NEXT:    ptrue p0.d2017; CHECK-2p2-NEXT:    cnot z0.d, p0/z, z1.d2018; CHECK-2p2-NEXT:    ret2019entry:2020  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)2021  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnot.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)2022  ret <vscale x 2 x i64> %02023}2024 2025define <vscale x 2 x i64> @test_svcnot_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) {2026; CHECK-LABEL: test_svcnot_nxv2i64_ptrue:2027; CHECK:       // %bb.0: // %entry2028; CHECK-NEXT:    ptrue p0.d2029; CHECK-NEXT:    movprfx z0, z22030; CHECK-NEXT:    cnot z0.d, p0/m, z2.d2031; CHECK-NEXT:    ret2032;2033; CHECK-2p2-LABEL: test_svcnot_nxv2i64_ptrue:2034; CHECK-2p2:       // %bb.0: // %entry2035; CHECK-2p2-NEXT:    ptrue p0.d2036; CHECK-2p2-NEXT:    cnot z0.d, p0/z, z2.d2037; CHECK-2p2-NEXT:    ret2038entry:2039  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)2040  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.cnot.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y)2041  ret <vscale x 2 x i64> %02042}2043 2044define <vscale x 16 x i8> @test_svnot_nxv16i8_ptrue_u(double %z0, <vscale x 16 x i8> %x) {2045; CHECK-LABEL: test_svnot_nxv16i8_ptrue_u:2046; CHECK:       // %bb.0: // %entry2047; CHECK-NEXT:    ptrue p0.b2048; CHECK-NEXT:    movprfx z0, z12049; CHECK-NEXT:    not z0.b, p0/m, z1.b2050; CHECK-NEXT:    ret2051;2052; CHECK-2p2-LABEL: test_svnot_nxv16i8_ptrue_u:2053; CHECK-2p2:       // %bb.0: // %entry2054; CHECK-2p2-NEXT:    ptrue p0.b2055; CHECK-2p2-NEXT:    not z0.b, p0/z, z1.b2056; CHECK-2p2-NEXT:    ret2057entry:2058  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)2059  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.not.nxv16i8(<vscale x 16 x i8> poison, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %x)2060  ret <vscale x 16 x i8> %02061}2062 2063define <vscale x 16 x i8> @test_svnot_nxv16i8_ptrue(double %z0, <vscale x 16 x i8> %x, <vscale x 16 x i8> %y) {2064; CHECK-LABEL: test_svnot_nxv16i8_ptrue:2065; CHECK:       // %bb.0: // %entry2066; CHECK-NEXT:    ptrue p0.b2067; CHECK-NEXT:    movprfx z0, z22068; CHECK-NEXT:    not z0.b, p0/m, z2.b2069; CHECK-NEXT:    ret2070;2071; CHECK-2p2-LABEL: test_svnot_nxv16i8_ptrue:2072; CHECK-2p2:       // %bb.0: // %entry2073; CHECK-2p2-NEXT:    ptrue p0.b2074; CHECK-2p2-NEXT:    not z0.b, p0/z, z2.b2075; CHECK-2p2-NEXT:    ret2076entry:2077  %pg = call <vscale x 16 x i1> @llvm.aarch64.sve.ptrue.nxv16i1(i32 31)2078  %0 = tail call <vscale x 16 x i8> @llvm.aarch64.sve.not.nxv16i8(<vscale x 16 x i8> %x, <vscale x 16 x i1> %pg, <vscale x 16 x i8> %y)2079  ret <vscale x 16 x i8> %02080}2081 2082define <vscale x 8 x i16> @test_svnot_nxv8i16_ptrue_u(double %z0, <vscale x 8 x i16> %x) {2083; CHECK-LABEL: test_svnot_nxv8i16_ptrue_u:2084; CHECK:       // %bb.0: // %entry2085; CHECK-NEXT:    ptrue p0.h2086; CHECK-NEXT:    movprfx z0, z12087; CHECK-NEXT:    not z0.h, p0/m, z1.h2088; CHECK-NEXT:    ret2089;2090; CHECK-2p2-LABEL: test_svnot_nxv8i16_ptrue_u:2091; CHECK-2p2:       // %bb.0: // %entry2092; CHECK-2p2-NEXT:    ptrue p0.h2093; CHECK-2p2-NEXT:    not z0.h, p0/z, z1.h2094; CHECK-2p2-NEXT:    ret2095entry:2096  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)2097  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.not.nxv8i16(<vscale x 8 x i16> poison, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %x)2098  ret <vscale x 8 x i16> %02099}2100 2101define <vscale x 8 x i16> @test_svnot_nxv8i16_ptrue(double %z0, <vscale x 8 x i16> %x, <vscale x 8 x i16> %y) {2102; CHECK-LABEL: test_svnot_nxv8i16_ptrue:2103; CHECK:       // %bb.0: // %entry2104; CHECK-NEXT:    ptrue p0.h2105; CHECK-NEXT:    movprfx z0, z22106; CHECK-NEXT:    not z0.h, p0/m, z2.h2107; CHECK-NEXT:    ret2108;2109; CHECK-2p2-LABEL: test_svnot_nxv8i16_ptrue:2110; CHECK-2p2:       // %bb.0: // %entry2111; CHECK-2p2-NEXT:    ptrue p0.h2112; CHECK-2p2-NEXT:    not z0.h, p0/z, z2.h2113; CHECK-2p2-NEXT:    ret2114entry:2115  %pg = call <vscale x 8 x i1> @llvm.aarch64.sve.ptrue.nxv8i1(i32 31)2116  %0 = tail call <vscale x 8 x i16> @llvm.aarch64.sve.not.nxv8i16(<vscale x 8 x i16> %x, <vscale x 8 x i1> %pg, <vscale x 8 x i16> %y)2117  ret <vscale x 8 x i16> %02118}2119 2120define <vscale x 4 x i32> @test_svnot_nxv4i32_ptrue_u(double %z0, <vscale x 4 x i32> %x) {2121; CHECK-LABEL: test_svnot_nxv4i32_ptrue_u:2122; CHECK:       // %bb.0: // %entry2123; CHECK-NEXT:    ptrue p0.s2124; CHECK-NEXT:    movprfx z0, z12125; CHECK-NEXT:    not z0.s, p0/m, z1.s2126; CHECK-NEXT:    ret2127;2128; CHECK-2p2-LABEL: test_svnot_nxv4i32_ptrue_u:2129; CHECK-2p2:       // %bb.0: // %entry2130; CHECK-2p2-NEXT:    ptrue p0.s2131; CHECK-2p2-NEXT:    not z0.s, p0/z, z1.s2132; CHECK-2p2-NEXT:    ret2133entry:2134  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)2135  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.not.nxv4i32(<vscale x 4 x i32> poison, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %x)2136  ret <vscale x 4 x i32> %02137}2138 2139define <vscale x 4 x i32> @test_svnot_nxv4i32_ptrue(double %z0, <vscale x 4 x i32> %x, <vscale x 4 x i32> %y) {2140; CHECK-LABEL: test_svnot_nxv4i32_ptrue:2141; CHECK:       // %bb.0: // %entry2142; CHECK-NEXT:    ptrue p0.s2143; CHECK-NEXT:    movprfx z0, z22144; CHECK-NEXT:    not z0.s, p0/m, z2.s2145; CHECK-NEXT:    ret2146;2147; CHECK-2p2-LABEL: test_svnot_nxv4i32_ptrue:2148; CHECK-2p2:       // %bb.0: // %entry2149; CHECK-2p2-NEXT:    ptrue p0.s2150; CHECK-2p2-NEXT:    not z0.s, p0/z, z2.s2151; CHECK-2p2-NEXT:    ret2152entry:2153  %pg = call <vscale x 4 x i1> @llvm.aarch64.sve.ptrue.nxv4i1(i32 31)2154  %0 = tail call <vscale x 4 x i32> @llvm.aarch64.sve.not.nxv4i32(<vscale x 4 x i32> %x, <vscale x 4 x i1> %pg, <vscale x 4 x i32> %y)2155  ret <vscale x 4 x i32> %02156}2157 2158define <vscale x 2 x i64> @test_svnot_nxv2i64_ptrue_u(double %z0, <vscale x 2 x i64> %x) {2159; CHECK-LABEL: test_svnot_nxv2i64_ptrue_u:2160; CHECK:       // %bb.0: // %entry2161; CHECK-NEXT:    ptrue p0.d2162; CHECK-NEXT:    movprfx z0, z12163; CHECK-NEXT:    not z0.d, p0/m, z1.d2164; CHECK-NEXT:    ret2165;2166; CHECK-2p2-LABEL: test_svnot_nxv2i64_ptrue_u:2167; CHECK-2p2:       // %bb.0: // %entry2168; CHECK-2p2-NEXT:    ptrue p0.d2169; CHECK-2p2-NEXT:    not z0.d, p0/z, z1.d2170; CHECK-2p2-NEXT:    ret2171entry:2172  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)2173  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.not.nxv2i64(<vscale x 2 x i64> poison, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %x)2174  ret <vscale x 2 x i64> %02175}2176 2177define <vscale x 2 x i64> @test_svnot_nxv2i64_ptrue(double %z0, <vscale x 2 x i64> %x, <vscale x 2 x i64> %y) {2178; CHECK-LABEL: test_svnot_nxv2i64_ptrue:2179; CHECK:       // %bb.0: // %entry2180; CHECK-NEXT:    ptrue p0.d2181; CHECK-NEXT:    movprfx z0, z22182; CHECK-NEXT:    not z0.d, p0/m, z2.d2183; CHECK-NEXT:    ret2184;2185; CHECK-2p2-LABEL: test_svnot_nxv2i64_ptrue:2186; CHECK-2p2:       // %bb.0: // %entry2187; CHECK-2p2-NEXT:    ptrue p0.d2188; CHECK-2p2-NEXT:    not z0.d, p0/z, z2.d2189; CHECK-2p2-NEXT:    ret2190entry:2191  %pg = call <vscale x 2 x i1> @llvm.aarch64.sve.ptrue.nxv2i1(i32 31)2192  %0 = tail call <vscale x 2 x i64> @llvm.aarch64.sve.not.nxv2i64(<vscale x 2 x i64> %x, <vscale x 2 x i1> %pg, <vscale x 2 x i64> %y)2193  ret <vscale x 2 x i64> %02194}2195