; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s ; ; SUNPKHI ; define @sunpkhi_i16( %a) { ; CHECK-LABEL: sunpkhi_i16 ; CHECK: sunpkhi z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.sunpkhi.nxv8i16( %a) ret %res } define @sunpkhi_i32( %a) { ; CHECK-LABEL: sunpkhi_i32 ; CHECK: sunpkhi z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.sunpkhi.nxv4i32( %a) ret %res } define @sunpkhi_i64( %a) { ; CHECK-LABEL: sunpkhi_i64 ; CHECK: sunpkhi z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.sunpkhi.nxv2i64( %a) ret %res } ; ; SUNPKLO ; define @sunpklo_i16( %a) { ; CHECK-LABEL: sunpklo_i16 ; CHECK: sunpklo z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.sunpklo.nxv8i16( %a) ret %res } define @sunpklo_i32( %a) { ; CHECK-LABEL: sunpklo_i32 ; CHECK: sunpklo z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.sunpklo.nxv4i32( %a) ret %res } define @sunpklo_i64( %a) { ; CHECK-LABEL: sunpklo_i64 ; CHECK: sunpklo z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.sunpklo.nxv2i64( %a) ret %res } ; ; UUNPKHI ; define @uunpkhi_i16( %a) { ; CHECK-LABEL: uunpkhi_i16 ; CHECK: uunpkhi z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.uunpkhi.nxv8i16( %a) ret %res } define @uunpkhi_i32( %a) { ; CHECK-LABEL: uunpkhi_i32 ; CHECK: uunpkhi z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.uunpkhi.nxv4i32( %a) ret %res } define @uunpkhi_i64( %a) { ; CHECK-LABEL: uunpkhi_i64 ; CHECK: uunpkhi z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.uunpkhi.nxv2i64( %a) ret %res } ; ; UUNPKLO ; define @uunpklo_i16( %a) { ; CHECK-LABEL: uunpklo_i16 ; CHECK: uunpklo z0.h, z0.b ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.uunpklo.nxv8i16( %a) ret %res } define @uunpklo_i32( %a) { ; CHECK-LABEL: uunpklo_i32 ; CHECK: uunpklo z0.s, z0.h ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.uunpklo.nxv4i32( %a) ret %res } define @uunpklo_i64( %a) { ; CHECK-LABEL: uunpklo_i64 ; CHECK: uunpklo z0.d, z0.s ; CHECK-NEXT: ret %res = call @llvm.aarch64.sve.uunpklo.nxv2i64( %a) ret %res } declare @llvm.aarch64.sve.sunpkhi.nxv8i16() declare @llvm.aarch64.sve.sunpkhi.nxv4i32() declare @llvm.aarch64.sve.sunpkhi.nxv2i64() declare @llvm.aarch64.sve.sunpklo.nxv8i16() declare @llvm.aarch64.sve.sunpklo.nxv4i32() declare @llvm.aarch64.sve.sunpklo.nxv2i64() declare @llvm.aarch64.sve.uunpkhi.nxv8i16() declare @llvm.aarch64.sve.uunpkhi.nxv4i32() declare @llvm.aarch64.sve.uunpkhi.nxv2i64() declare @llvm.aarch64.sve.uunpklo.nxv8i16() declare @llvm.aarch64.sve.uunpklo.nxv4i32() declare @llvm.aarch64.sve.uunpklo.nxv2i64()