; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s ; ; PFIRST ; define @pfirst_b8( %pg, %a) { ; CHECK-LABEL: pfirst_b8: ; CHECK: pfirst p1.b, p0, p1.b ; CHECK-NEXT: mov p0.b, p1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.pfirst.nxv16i1( %pg, %a) ret %out } ; ; PNEXT ; define @pnext_b8( %pg, %a) { ; CHECK-LABEL: pnext_b8: ; CHECK: pnext p1.b, p0, p1.b ; CHECK-NEXT: mov p0.b, p1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.pnext.nxv16i1( %pg, %a) ret %out } define @pnext_b16( %pg, %a) { ; CHECK-LABEL: pnext_b16: ; CHECK: pnext p1.h, p0, p1.h ; CHECK-NEXT: mov p0.b, p1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.pnext.nxv8i1( %pg, %a) ret %out } define @pnext_b32( %pg, %a) { ; CHECK-LABEL: pnext_b32: ; CHECK: pnext p1.s, p0, p1.s ; CHECK-NEXT: mov p0.b, p1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.pnext.nxv4i1( %pg, %a) ret %out } define @pnext_b64( %pg, %a) { ; CHECK-LABEL: pnext_b64: ; CHECK: pnext p1.d, p0, p1.d ; CHECK-NEXT: mov p0.b, p1.b ; CHECK-NEXT: ret %out = call @llvm.aarch64.sve.pnext.nxv2i1( %pg, %a) ret %out } ; ; PUNPKHI ; define @punpkhi_b16( %a) { ; CHECK-LABEL: punpkhi_b16 ; CHECK: punpkhi p0.h, p0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.punpkhi.nxv8i1( %a) ret %res } define @punpkhi_b8( %a) { ; CHECK-LABEL: punpkhi_b8 ; CHECK: punpkhi p0.h, p0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.punpkhi.nxv4i1( %a) ret %res } define @punpkhi_b4( %a) { ; CHECK-LABEL: punpkhi_b4 ; CHECK: punpkhi p0.h, p0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.punpkhi.nxv2i1( %a) ret %res } ; ; PUNPKLO ; define @punpklo_b16( %a) { ; CHECK-LABEL: punpklo_b16 ; CHECK: punpklo p0.h, p0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.punpklo.nxv8i1( %a) ret %res } define @punpklo_b8( %a) { ; CHECK-LABEL: punpklo_b8 ; CHECK: punpklo p0.h, p0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.punpklo.nxv4i1( %a) ret %res } define @punpklo_b4( %a) { ; CHECK-LABEL: punpklo_b4 ; CHECK: punpklo p0.h, p0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.punpklo.nxv2i1( %a) ret %res } declare @llvm.aarch64.sve.pfirst.nxv16i1(, ) declare @llvm.aarch64.sve.pnext.nxv16i1(, ) declare @llvm.aarch64.sve.pnext.nxv8i1(, ) declare @llvm.aarch64.sve.pnext.nxv4i1(, ) declare @llvm.aarch64.sve.pnext.nxv2i1(, ) declare @llvm.aarch64.sve.punpkhi.nxv8i1() declare @llvm.aarch64.sve.punpkhi.nxv4i1() declare @llvm.aarch64.sve.punpkhi.nxv2i1() declare @llvm.aarch64.sve.punpklo.nxv8i1() declare @llvm.aarch64.sve.punpklo.nxv4i1() declare @llvm.aarch64.sve.punpklo.nxv2i1()