; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s define @vselect_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: vselect_16: ; CHECK: sel p0.b, p0, p1.b, p2.b ; CHECK-NEXT: ret %res = select %Pg, %Pn, %Pd ret %res; } define @vselect_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: vselect_8: ; CHECK: sel p0.b, p0, p1.b, p2.b ; CHECK-NEXT: ret %res = select %Pg, %Pn, %Pd ret %res; } define @vselect_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: vselect_4: ; CHECK: sel p0.b, p0, p1.b, p2.b ; CHECK-NEXT: ret %res = select %Pg, %Pn, %Pd ret %res; } define @vselect_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: vselect_2: ; CHECK: sel p0.b, p0, p1.b, p2.b ; CHECK-NEXT: ret %res = select %Pg, %Pn, %Pd ret %res; } define @and_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: and_16: ; CHECK: and p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.and.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @and_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: and_8: ; CHECK: and p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.and.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @and_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: and_4: ; CHECK: and p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.and.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @and_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: and_2: ; CHECK: and p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.and.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @bic_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bic_16: ; CHECK: bic p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bic.pred.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @bic_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bic_8: ; CHECK: bic p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bic.pred.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @bic_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bic_4: ; CHECK: bic p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bic.pred.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @bic_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bic_2: ; CHECK: bic p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bic.pred.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @eor_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eor_16: ; CHECK: eor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eor.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @eor_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eor_8: ; CHECK: eor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eor.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @eor_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eor_4: ; CHECK: eor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eor.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @eor_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eor_2: ; CHECK: eor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eor.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @ands_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: ands_16: ; CHECK: ands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ands.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @ands_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: ands_8: ; CHECK: ands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ands.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @ands_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: ands_4: ; CHECK: ands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ands.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @ands_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: ands_2: ; CHECK: ands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.ands.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @bics_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bics_16: ; CHECK: bics p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bics.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @bics_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bics_8: ; CHECK: bics p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bics.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @bics_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bics_4: ; CHECK: bics p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bics.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @bics_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: bics_2: ; CHECK: bics p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.bics.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @eors_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eors_16: ; CHECK: eors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eors.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @eors_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eors_8: ; CHECK: eors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eors.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @eors_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eors_4: ; CHECK: eors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eors.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @eors_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: eors_2: ; CHECK: eors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.eors.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @orr_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orr_16: ; CHECK: orr p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orr.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @orr_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orr_8: ; CHECK: orr p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orr.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @orr_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orr_4: ; CHECK: orr p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orr.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @orr_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orr_2: ; CHECK: orr p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orr.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @orn_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orn_16: ; CHECK: orn p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orn.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @orn_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orn_8: ; CHECK: orn p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orn.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @orn_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orn_4: ; CHECK: orn p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orn.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @orn_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orn_2: ; CHECK: orn p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orn.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @nor_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nor_16: ; CHECK: nor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nor.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @nor_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nor_8: ; CHECK: nor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nor.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @nor_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nor_4: ; CHECK: nor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nor.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @nor_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nor_2: ; CHECK: nor p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nor.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @nand_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nand_16: ; CHECK: nand p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nand.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @nand_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nand_8: ; CHECK: nand p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nand.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @nand_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nand_4: ; CHECK: nand p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nand.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @nand_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nand_2: ; CHECK: nand p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nand.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @orrs_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orrs_16: ; CHECK: orrs p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orrs.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @orrs_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orrs_8: ; CHECK: orrs p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orrs.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @orrs_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orrs_4: ; CHECK: orrs p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orrs.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @orrs_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orrs_2: ; CHECK: orrs p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orrs.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @orns_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orns_16: ; CHECK: orns p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orns.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @orns_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orns_8: ; CHECK: orns p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orns.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @orns_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orns_4: ; CHECK: orns p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orns.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @orns_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: orns_2: ; CHECK: orns p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.orns.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @nors_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nors_16: ; CHECK: nors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nors.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @nors_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nors_8: ; CHECK: nors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nors.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @nors_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nors_4: ; CHECK: nors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nors.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @nors_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nors_2: ; CHECK: nors p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nors.nxv2i1( %Pg, %Pn, %Pd) ret %res; } define @nands_16( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nands_16: ; CHECK: nands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nands.nxv16i1( %Pg, %Pn, %Pd) ret %res; } define @nands_8( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nands_8: ; CHECK: nands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nands.nxv8i1( %Pg, %Pn, %Pd) ret %res; } define @nands_4( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nands_4: ; CHECK: nands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nands.nxv4i1( %Pg, %Pn, %Pd) ret %res; } define @nands_2( %Pg, %Pn, %Pd) { ; CHECK-LABEL: nands_2: ; CHECK: nands p0.b, p0/z, p1.b, p2.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.nands.nxv2i1( %Pg, %Pn, %Pd) ret %res; } declare @llvm.aarch64.sve.and.nxv16i1(, , ) declare @llvm.aarch64.sve.and.nxv8i1(, , ) declare @llvm.aarch64.sve.and.nxv4i1(, , ) declare @llvm.aarch64.sve.and.nxv2i1(, , ) declare @llvm.aarch64.sve.bic.pred.nxv16i1(, , ) declare @llvm.aarch64.sve.bic.pred.nxv8i1(, , ) declare @llvm.aarch64.sve.bic.pred.nxv4i1(, , ) declare @llvm.aarch64.sve.bic.pred.nxv2i1(, , ) declare @llvm.aarch64.sve.eor.nxv16i1(, , ) declare @llvm.aarch64.sve.eor.nxv8i1(, , ) declare @llvm.aarch64.sve.eor.nxv4i1(, , ) declare @llvm.aarch64.sve.eor.nxv2i1(, , ) declare @llvm.aarch64.sve.ands.nxv16i1(, , ) declare @llvm.aarch64.sve.ands.nxv8i1(, , ) declare @llvm.aarch64.sve.ands.nxv4i1(, , ) declare @llvm.aarch64.sve.ands.nxv2i1(, , ) declare @llvm.aarch64.sve.bics.nxv16i1(, , ) declare @llvm.aarch64.sve.bics.nxv8i1(, , ) declare @llvm.aarch64.sve.bics.nxv4i1(, , ) declare @llvm.aarch64.sve.bics.nxv2i1(, , ) declare @llvm.aarch64.sve.eors.nxv16i1(, , ) declare @llvm.aarch64.sve.eors.nxv8i1(, , ) declare @llvm.aarch64.sve.eors.nxv4i1(, , ) declare @llvm.aarch64.sve.eors.nxv2i1(, , ) declare @llvm.aarch64.sve.orr.nxv16i1(, , ) declare @llvm.aarch64.sve.orr.nxv8i1(, , ) declare @llvm.aarch64.sve.orr.nxv4i1(, , ) declare @llvm.aarch64.sve.orr.nxv2i1(, , ) declare @llvm.aarch64.sve.orn.nxv16i1(, , ) declare @llvm.aarch64.sve.orn.nxv8i1(, , ) declare @llvm.aarch64.sve.orn.nxv4i1(, , ) declare @llvm.aarch64.sve.orn.nxv2i1(, , ) declare @llvm.aarch64.sve.nor.nxv16i1(, , ) declare @llvm.aarch64.sve.nor.nxv8i1(, , ) declare @llvm.aarch64.sve.nor.nxv4i1(, , ) declare @llvm.aarch64.sve.nor.nxv2i1(, , ) declare @llvm.aarch64.sve.nand.nxv16i1(, , ) declare @llvm.aarch64.sve.nand.nxv8i1(, , ) declare @llvm.aarch64.sve.nand.nxv4i1(, , ) declare @llvm.aarch64.sve.nand.nxv2i1(, , ) declare @llvm.aarch64.sve.orrs.nxv16i1(, , ) declare @llvm.aarch64.sve.orrs.nxv8i1(, , ) declare @llvm.aarch64.sve.orrs.nxv4i1(, , ) declare @llvm.aarch64.sve.orrs.nxv2i1(, , ) declare @llvm.aarch64.sve.orns.nxv16i1(, , ) declare @llvm.aarch64.sve.orns.nxv8i1(, , ) declare @llvm.aarch64.sve.orns.nxv4i1(, , ) declare @llvm.aarch64.sve.orns.nxv2i1(, , ) declare @llvm.aarch64.sve.nors.nxv16i1(, , ) declare @llvm.aarch64.sve.nors.nxv8i1(, , ) declare @llvm.aarch64.sve.nors.nxv4i1(, , ) declare @llvm.aarch64.sve.nors.nxv2i1(, , ) declare @llvm.aarch64.sve.nands.nxv16i1(, , ) declare @llvm.aarch64.sve.nands.nxv8i1(, , ) declare @llvm.aarch64.sve.nands.nxv4i1(, , ) declare @llvm.aarch64.sve.nands.nxv2i1(, , )