1 ; Test vector replicates, v4i32 version.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z13 | FileCheck %s
5 ; Test a byte-granularity replicate with the lowest useful value.
6 define <4 x i32> @f1() {
8 ; CHECK: vrepib %v24, 1
10 ret <4 x i32> <i32 16843009, i32 16843009, i32 16843009, i32 16843009>
13 ; Test a byte-granularity replicate with an arbitrary value.
14 define <4 x i32> @f2() {
16 ; CHECK: vrepib %v24, -55
18 ret <4 x i32> <i32 3385444809, i32 3385444809, i32 3385444809, i32 3385444809>
21 ; Test a byte-granularity replicate with the highest useful value.
22 define <4 x i32> @f3() {
24 ; CHECK: vrepib %v24, -2
26 ret <4 x i32> <i32 4278124286, i32 4278124286, i32 4278124286, i32 4278124286>
29 ; Test a halfword-granularity replicate with the lowest useful value.
30 define <4 x i32> @f4() {
32 ; CHECK: vrepih %v24, 1
34 ret <4 x i32> <i32 65537, i32 65537, i32 65537, i32 65537>
37 ; Test a halfword-granularity replicate with an arbitrary value.
38 define <4 x i32> @f5() {
40 ; CHECK: vrepih %v24, 25650
42 ret <4 x i32> <i32 1681024050, i32 1681024050, i32 1681024050, i32 1681024050>
45 ; Test a halfword-granularity replicate with the highest useful value.
46 define <4 x i32> @f6() {
48 ; CHECK: vrepih %v24, -2
50 ret <4 x i32> <i32 -65538, i32 -65538, i32 -65538, i32 -65538>
53 ; Test a word-granularity replicate with the lowest useful positive value.
54 define <4 x i32> @f7() {
56 ; CHECK: vrepif %v24, 1
58 ret <4 x i32> <i32 1, i32 1, i32 1, i32 1>
61 ; Test a word-granularity replicate with the highest in-range value.
62 define <4 x i32> @f8() {
64 ; CHECK: vrepif %v24, 32767
66 ret <4 x i32> <i32 32767, i32 32767, i32 32767, i32 32767>
69 ; Test a word-granularity replicate with the next highest value.
70 ; This cannot use VREPIF.
71 define <4 x i32> @f9() {
75 ret <4 x i32> <i32 32768, i32 32768, i32 32768, i32 32768>
78 ; Test a word-granularity replicate with the lowest in-range value.
79 define <4 x i32> @f10() {
81 ; CHECK: vrepif %v24, -32768
83 ret <4 x i32> <i32 -32768, i32 -32768, i32 -32768, i32 -32768>
86 ; Test a word-granularity replicate with the next lowest value.
87 ; This cannot use VREPIF.
88 define <4 x i32> @f11() {
92 ret <4 x i32> <i32 -32769, i32 -32769, i32 -32769, i32 -32769>
95 ; Test a word-granularity replicate with the highest useful negative value.
96 define <4 x i32> @f12() {
98 ; CHECK: vrepif %v24, -2
100 ret <4 x i32> <i32 -2, i32 -2, i32 -2, i32 -2>
103 ; Test a doubleword-granularity replicate with the lowest useful positive
105 define <4 x i32> @f13() {
107 ; CHECK: vrepig %v24, 1
109 ret <4 x i32> <i32 0, i32 1, i32 0, i32 1>
112 ; Test a doubleword-granularity replicate with the highest in-range value.
113 define <4 x i32> @f14() {
115 ; CHECK: vrepig %v24, 32767
117 ret <4 x i32> <i32 0, i32 32767, i32 0, i32 32767>
120 ; Test a doubleword-granularity replicate with the next highest value.
121 ; This cannot use VREPIG.
122 define <4 x i32> @f15() {
126 ret <4 x i32> <i32 0, i32 32768, i32 0, i32 32768>
129 ; Test a doubleword-granularity replicate with the lowest in-range value.
130 define <4 x i32> @f16() {
132 ; CHECK: vrepig %v24, -32768
134 ret <4 x i32> <i32 -1, i32 -32768, i32 -1, i32 -32768>
137 ; Test a doubleword-granularity replicate with the next lowest value.
138 ; This cannot use VREPIG.
139 define <4 x i32> @f17() {
143 ret <4 x i32> <i32 -1, i32 -32769, i32 -1, i32 -32769>
146 ; Test a doubleword-granularity replicate with the highest useful negative
148 define <4 x i32> @f18() {
150 ; CHECK: vrepig %v24, -2
152 ret <4 x i32> <i32 -1, i32 -2, i32 -1, i32 -2>
155 ; Repeat f14 with undefs optimistically treated as 0, 32767.
156 define <4 x i32> @f19() {
158 ; CHECK: vrepig %v24, 32767
160 ret <4 x i32> <i32 undef, i32 undef, i32 0, i32 32767>
163 ; Repeat f18 with undefs optimistically treated as -2, -1.
164 define <4 x i32> @f20() {
166 ; CHECK: vrepig %v24, -2
168 ret <4 x i32> <i32 -1, i32 undef, i32 undef, i32 -2>