[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / SystemZ / vec-sext.ll
blob9831de52ee839849097a6d67d919e5cf04755d2b
1 ; Test that vector sexts are done efficently with unpack instructions also in
2 ; case of fewer elements than allowed, e.g. <2 x i32>.
4 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
7 define <2 x i16> @fun1(<2 x i8> %val1) {
8 ; CHECK-LABEL: fun1:
9 ; CHECK:        vuphb   %v24, %v24
10 ; CHECK-NEXT:   br      %r14
11   %z = sext <2 x i8> %val1 to <2 x i16>
12   ret <2 x i16> %z
15 define <2 x i32> @fun2(<2 x i8> %val1) {
16 ; CHECK-LABEL: fun2:
17 ; CHECK:        vuphb   %v0, %v24
18 ; CHECK-NEXT:   vuphh   %v24, %v0
19 ; CHECK-NEXT:   br      %r14
20   %z = sext <2 x i8> %val1 to <2 x i32>
21   ret <2 x i32> %z
24 define <2 x i64> @fun3(<2 x i8> %val1) {
25 ; CHECK-LABEL: fun3:
26 ; CHECK:        vuphb   %v0, %v24
27 ; CHECK-NEXT:   vuphh   %v0, %v0
28 ; CHECK-NEXT:   vuphf   %v24, %v0
29 ; CHECK-NEXT:   br      %r14
30   %z = sext <2 x i8> %val1 to <2 x i64>
31   ret <2 x i64> %z
34 define <2 x i32> @fun4(<2 x i16> %val1) {
35 ; CHECK-LABEL: fun4:
36 ; CHECK:        vuphh   %v24, %v24
37 ; CHECK-NEXT:   br      %r14
38   %z = sext <2 x i16> %val1 to <2 x i32>
39   ret <2 x i32> %z
42 define <2 x i64> @fun5(<2 x i16> %val1) {
43 ; CHECK-LABEL: fun5:
44 ; CHECK:        vuphh   %v0, %v24
45 ; CHECK-NEXT:   vuphf   %v24, %v0
46 ; CHECK-NEXT:   br      %r14
47   %z = sext <2 x i16> %val1 to <2 x i64>
48   ret <2 x i64> %z
51 define <2 x i64> @fun6(<2 x i32> %val1) {
52 ; CHECK-LABEL: fun6:
53 ; CHECK:        vuphf   %v24, %v24
54 ; CHECK-NEXT:   br      %r14
55   %z = sext <2 x i32> %val1 to <2 x i64>
56   ret <2 x i64> %z
59 define <4 x i16> @fun7(<4 x i8> %val1) {
60 ; CHECK-LABEL: fun7:
61 ; CHECK:        vuphb   %v24, %v24
62 ; CHECK-NEXT:   br      %r14
63   %z = sext <4 x i8> %val1 to <4 x i16>
64   ret <4 x i16> %z
67 define <4 x i32> @fun8(<4 x i8> %val1) {
68 ; CHECK-LABEL: fun8:
69 ; CHECK:        vuphb   %v0, %v24
70 ; CHECK-NEXT:   vuphh   %v24, %v0
71 ; CHECK-NEXT:   br      %r14
72   %z = sext <4 x i8> %val1 to <4 x i32>
73   ret <4 x i32> %z
76 define <4 x i32> @fun9(<4 x i16> %val1) {
77 ; CHECK-LABEL: fun9:
78 ; CHECK:        vuphh   %v24, %v24
79 ; CHECK-NEXT:   br      %r14
80   %z = sext <4 x i16> %val1 to <4 x i32>
81   ret <4 x i32> %z
84 define <8 x i16> @fun10(<8 x i8> %val1) {
85 ; CHECK-LABEL: fun10:
86 ; CHECK:        vuphb   %v24, %v24
87 ; CHECK-NEXT:   br      %r14
88   %z = sext <8 x i8> %val1 to <8 x i16>
89   ret <8 x i16> %z