1 ; RUN: llc -mtriple=aarch64-linux-gnu -mattr=+sve < %s | FileCheck %s
7 define <vscale x 8 x i16> @sunpkhi_i16(<vscale x 16 x i8> %a) {
8 ; CHECK-LABEL: sunpkhi_i16
9 ; CHECK: sunpkhi z0.h, z0.b
11 %res = call <vscale x 8 x i16> @llvm.aarch64.sve.sunpkhi.nxv8i16(<vscale x 16 x i8> %a)
12 ret <vscale x 8 x i16> %res
15 define <vscale x 4 x i32> @sunpkhi_i32(<vscale x 8 x i16> %a) {
16 ; CHECK-LABEL: sunpkhi_i32
17 ; CHECK: sunpkhi z0.s, z0.h
19 %res = call <vscale x 4 x i32> @llvm.aarch64.sve.sunpkhi.nxv4i32(<vscale x 8 x i16> %a)
20 ret <vscale x 4 x i32> %res
23 define <vscale x 2 x i64> @sunpkhi_i64(<vscale x 4 x i32> %a) {
24 ; CHECK-LABEL: sunpkhi_i64
25 ; CHECK: sunpkhi z0.d, z0.s
27 %res = call <vscale x 2 x i64> @llvm.aarch64.sve.sunpkhi.nxv2i64(<vscale x 4 x i32> %a)
28 ret <vscale x 2 x i64> %res
35 define <vscale x 8 x i16> @sunpklo_i16(<vscale x 16 x i8> %a) {
36 ; CHECK-LABEL: sunpklo_i16
37 ; CHECK: sunpklo z0.h, z0.b
39 %res = call <vscale x 8 x i16> @llvm.aarch64.sve.sunpklo.nxv8i16(<vscale x 16 x i8> %a)
40 ret <vscale x 8 x i16> %res
43 define <vscale x 4 x i32> @sunpklo_i32(<vscale x 8 x i16> %a) {
44 ; CHECK-LABEL: sunpklo_i32
45 ; CHECK: sunpklo z0.s, z0.h
47 %res = call <vscale x 4 x i32> @llvm.aarch64.sve.sunpklo.nxv4i32(<vscale x 8 x i16> %a)
48 ret <vscale x 4 x i32> %res
51 define <vscale x 2 x i64> @sunpklo_i64(<vscale x 4 x i32> %a) {
52 ; CHECK-LABEL: sunpklo_i64
53 ; CHECK: sunpklo z0.d, z0.s
55 %res = call <vscale x 2 x i64> @llvm.aarch64.sve.sunpklo.nxv2i64(<vscale x 4 x i32> %a)
56 ret <vscale x 2 x i64> %res
63 define <vscale x 8 x i16> @uunpkhi_i16(<vscale x 16 x i8> %a) {
64 ; CHECK-LABEL: uunpkhi_i16
65 ; CHECK: uunpkhi z0.h, z0.b
67 %res = call <vscale x 8 x i16> @llvm.aarch64.sve.uunpkhi.nxv8i16(<vscale x 16 x i8> %a)
68 ret <vscale x 8 x i16> %res
71 define <vscale x 4 x i32> @uunpkhi_i32(<vscale x 8 x i16> %a) {
72 ; CHECK-LABEL: uunpkhi_i32
73 ; CHECK: uunpkhi z0.s, z0.h
75 %res = call <vscale x 4 x i32> @llvm.aarch64.sve.uunpkhi.nxv4i32(<vscale x 8 x i16> %a)
76 ret <vscale x 4 x i32> %res
79 define <vscale x 2 x i64> @uunpkhi_i64(<vscale x 4 x i32> %a) {
80 ; CHECK-LABEL: uunpkhi_i64
81 ; CHECK: uunpkhi z0.d, z0.s
83 %res = call <vscale x 2 x i64> @llvm.aarch64.sve.uunpkhi.nxv2i64(<vscale x 4 x i32> %a)
84 ret <vscale x 2 x i64> %res
91 define <vscale x 8 x i16> @uunpklo_i16(<vscale x 16 x i8> %a) {
92 ; CHECK-LABEL: uunpklo_i16
93 ; CHECK: uunpklo z0.h, z0.b
95 %res = call <vscale x 8 x i16> @llvm.aarch64.sve.uunpklo.nxv8i16(<vscale x 16 x i8> %a)
96 ret <vscale x 8 x i16> %res
99 define <vscale x 4 x i32> @uunpklo_i32(<vscale x 8 x i16> %a) {
100 ; CHECK-LABEL: uunpklo_i32
101 ; CHECK: uunpklo z0.s, z0.h
103 %res = call <vscale x 4 x i32> @llvm.aarch64.sve.uunpklo.nxv4i32(<vscale x 8 x i16> %a)
104 ret <vscale x 4 x i32> %res
107 define <vscale x 2 x i64> @uunpklo_i64(<vscale x 4 x i32> %a) {
108 ; CHECK-LABEL: uunpklo_i64
109 ; CHECK: uunpklo z0.d, z0.s
111 %res = call <vscale x 2 x i64> @llvm.aarch64.sve.uunpklo.nxv2i64(<vscale x 4 x i32> %a)
112 ret <vscale x 2 x i64> %res
115 declare <vscale x 8 x i16> @llvm.aarch64.sve.sunpkhi.nxv8i16(<vscale x 16 x i8>)
116 declare <vscale x 4 x i32> @llvm.aarch64.sve.sunpkhi.nxv4i32(<vscale x 8 x i16>)
117 declare <vscale x 2 x i64> @llvm.aarch64.sve.sunpkhi.nxv2i64(<vscale x 4 x i32>)
119 declare <vscale x 8 x i16> @llvm.aarch64.sve.sunpklo.nxv8i16(<vscale x 16 x i8>)
120 declare <vscale x 4 x i32> @llvm.aarch64.sve.sunpklo.nxv4i32(<vscale x 8 x i16>)
121 declare <vscale x 2 x i64> @llvm.aarch64.sve.sunpklo.nxv2i64(<vscale x 4 x i32>)
123 declare <vscale x 8 x i16> @llvm.aarch64.sve.uunpkhi.nxv8i16(<vscale x 16 x i8>)
124 declare <vscale x 4 x i32> @llvm.aarch64.sve.uunpkhi.nxv4i32(<vscale x 8 x i16>)
125 declare <vscale x 2 x i64> @llvm.aarch64.sve.uunpkhi.nxv2i64(<vscale x 4 x i32>)
127 declare <vscale x 8 x i16> @llvm.aarch64.sve.uunpklo.nxv8i16(<vscale x 16 x i8>)
128 declare <vscale x 4 x i32> @llvm.aarch64.sve.uunpklo.nxv4i32(<vscale x 8 x i16>)
129 declare <vscale x 2 x i64> @llvm.aarch64.sve.uunpklo.nxv2i64(<vscale x 4 x i32>)