• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
2
3declare <2 x double> @llvm.s390.vfidb(<2 x double>, i32, i32)
4define void @test_vfidb(<2 x double> %arg0, i32 %arg1, i32 %arg2) {
5  ; CHECK: immarg operand has non-immediate parameter
6  ; CHECK-NEXT: i32 %arg1
7  ; CHECK-NEXT: %ret0 = call <2 x double> @llvm.s390.vfidb(<2 x double> %arg0, i32 %arg1, i32 0)
8  ; CHECK: immarg operand has non-immediate parameter
9  ; CHECK-NEXT: i32 %arg2
10  ; CHECK-NEXT: %ret1 = call <2 x double> @llvm.s390.vfidb(<2 x double> %arg0, i32 0, i32 %arg2)
11  %ret0 = call <2 x double> @llvm.s390.vfidb(<2 x double> %arg0, i32 %arg1, i32 0)
12  %ret1 = call <2 x double> @llvm.s390.vfidb(<2 x double> %arg0, i32 0, i32 %arg2)
13  ret void
14}
15
16declare <2 x double> @llvm.s390.vfmaxdb(<2 x double>, <2 x double>, i32)
17define <2 x double> @test_vfmaxdb(<2 x double> %arg0, <2 x double> %arg1, i32 %arg2) {
18  ; CHECK: immarg operand has non-immediate parameter
19  ; CHECK-NEXT: i32 %arg2
20  ; CHECK-NEXT: %ret = call <2 x double> @llvm.s390.vfmaxdb(<2 x double> %arg0, <2 x double> %arg1, i32 %arg2)
21  %ret = call <2 x double> @llvm.s390.vfmaxdb(<2 x double> %arg0, <2 x double> %arg1, i32 %arg2)
22  ret <2 x double> %ret
23}
24
25declare <2 x double> @llvm.s390.vfmindb(<2 x double>, <2 x double>, i32)
26define <2 x double> @test_vfmindb(<2 x double> %arg0, <2 x double> %arg1, i32 %arg2) {
27  ; CHECK: immarg operand has non-immediate parameter
28  ; CHECK-NEXT: i32 %arg2
29  ; CHECK-NEXT: %ret = call <2 x double> @llvm.s390.vfmindb(<2 x double> %arg0, <2 x double> %arg1, i32 %arg2)
30  %ret = call <2 x double> @llvm.s390.vfmindb(<2 x double> %arg0, <2 x double> %arg1, i32 %arg2)
31  ret <2 x double> %ret
32}
33
34declare <2 x float> @llvm.s390.vfmaxsb(<2 x float>, <2 x float>, i32)
35define <2 x float> @test_vfmaxsb(<2 x float> %arg0, <2 x float> %arg1, i32 %arg2) {
36  ; CHECK: immarg operand has non-immediate parameter
37  ; CHECK-NEXT: i32 %arg2
38  ; CHECK-NEXT: %ret = call <2 x float> @llvm.s390.vfmaxsb(<2 x float> %arg0, <2 x float> %arg1, i32 %arg2)
39  %ret = call <2 x float> @llvm.s390.vfmaxsb(<2 x float> %arg0, <2 x float> %arg1, i32 %arg2)
40  ret <2 x float> %ret
41}
42
43declare <2 x float> @llvm.s390.vfminsb(<2 x float>, <2 x float>, i32)
44define <2 x float> @test_vfminsb(<2 x float> %arg0, <2 x float> %arg1, i32 %arg2) {
45  ; CHECK: immarg operand has non-immediate parameter
46  ; CHECK-NEXT: i32 %arg2
47  ; CHECK-NEXT: %ret = call <2 x float> @llvm.s390.vfminsb(<2 x float> %arg0, <2 x float> %arg1, i32 %arg2)
48  %ret = call <2 x float> @llvm.s390.vfminsb(<2 x float> %arg0, <2 x float> %arg1, i32 %arg2)
49  ret <2 x float> %ret
50}
51
52declare <4 x float> @llvm.s390.vfisb(<4 x float>, i32, i32)
53define <4 x float> @test_vfisb(<4 x float> %arg0, i32 %arg1, i32 %arg2) {
54  ; CHECK: immarg operand has non-immediate parameter
55  ; CHECK-NEXT: i32 %arg1
56  ; CHECK-NEXT: %ret0 = call <4 x float> @llvm.s390.vfisb(<4 x float> %arg0, i32 %arg1, i32 0)
57  %ret0 = call <4 x float> @llvm.s390.vfisb(<4 x float> %arg0, i32 %arg1, i32 0)
58
59  ; CHECK: immarg operand has non-immediate parameter
60  ; CHECK-NEXT: i32 %arg2
61  ; CHECK-NEXT: %ret1 = call <4 x float> @llvm.s390.vfisb(<4 x float> %ret0, i32 0, i32 %arg2)
62  %ret1 = call <4 x float> @llvm.s390.vfisb(<4 x float> %ret0, i32 0, i32 %arg2)
63
64  ret <4 x float> %ret1
65}
66
67declare <16 x i8> @llvm.s390.vstrcb(<16 x i8>, <16 x i8>, <16 x i8>, i32)
68define <16 x i8> @test_vstrcb(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3) {
69  ; CHECK: immarg operand has non-immediate parameter
70  ; CHECK-NEXT: i32 %arg3
71  ; CHECK-NEXT: %ret = call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3)
72  %ret = call <16 x i8> @llvm.s390.vstrcb(<16 x i8> %arg0, <16 x i8>%arg1, <16 x i8> %arg2, i32 %arg3)
73  ret <16 x i8> %ret
74}
75
76declare <8 x i16> @llvm.s390.vstrch(<8 x i16>, <8 x i16>, <8 x i16>, i32)
77define <8 x i16> @test_vstrch(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3) {
78  ; CHECK: immarg operand has non-immediate parameter
79  ; CHECK-NEXT: i32 %arg3
80  ; CHECK-NEXT: %ret = call <8 x i16> @llvm.s390.vstrch(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3)
81  %ret = call <8 x i16> @llvm.s390.vstrch(<8 x i16> %arg0, <8 x i16>%arg1, <8 x i16> %arg2, i32 %arg3)
82  ret <8 x i16> %ret
83}
84
85declare <4 x i32> @llvm.s390.vstrcf(<4 x i32>, <4 x i32>, <4 x i32>, i32)
86define <4 x i32> @test_vstrcf(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3) {
87  ; CHECK: immarg operand has non-immediate parameter
88  ; CHECK-NEXT: i32 %arg3
89  ; CHECK-NEXT: %ret = call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3)
90  %ret = call <4 x i32> @llvm.s390.vstrcf(<4 x i32> %arg0, <4 x i32>%arg1, <4 x i32> %arg2, i32 %arg3)
91  ret <4 x i32> %ret
92}
93
94declare <16 x i8> @llvm.s390.vstrczb(<16 x i8>, <16 x i8>, <16 x i8>, i32)
95define <16 x i8> @test_vstrczb(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3) {
96  ; CHECK: immarg operand has non-immediate parameter
97  ; CHECK-NEXT: i32 %arg3
98  ; CHECK-NEXT: %ret = call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3)
99  %ret = call <16 x i8> @llvm.s390.vstrczb(<16 x i8> %arg0, <16 x i8>%arg1, <16 x i8> %arg2, i32 %arg3)
100  ret <16 x i8> %ret
101}
102
103declare <8 x i16> @llvm.s390.vstrczh(<8 x i16>, <8 x i16>, <8 x i16>, i32)
104define <8 x i16> @test_vstrczh(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3) {
105  ; CHECK: immarg operand has non-immediate parameter
106  ; CHECK-NEXT: i32 %arg3
107  ; CHECK-NEXT: %ret = call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3)
108  %ret = call <8 x i16> @llvm.s390.vstrczh(<8 x i16> %arg0, <8 x i16>%arg1, <8 x i16> %arg2, i32 %arg3)
109  ret <8 x i16> %ret
110}
111
112declare <4 x i32> @llvm.s390.vstrczf(<4 x i32>, <4 x i32>, <4 x i32>, i32)
113define <4 x i32> @test_vstrczf(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3) {
114  ; CHECK: immarg operand has non-immediate parameter
115  ; CHECK-NEXT: i32 %arg3
116  ; CHECK-NEXT: %ret = call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3)
117  %ret = call <4 x i32> @llvm.s390.vstrczf(<4 x i32> %arg0, <4 x i32>%arg1, <4 x i32> %arg2, i32 %arg3)
118  ret <4 x i32> %ret
119}
120
121declare { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8>, <16 x i8>, <16 x i8>, i32)
122define { <16 x i8>, i32 } @test_vstrcbs(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3) {
123  ; CHECK: immarg operand has non-immediate parameter
124  ; CHECK-NEXT: i32 %arg3
125  ; CHECK-NEXT: %ret = call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3)
126  %ret = call { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8> %arg0, <16 x i8>%arg1, <16 x i8> %arg2, i32 %arg3)
127  ret { <16 x i8>, i32 } %ret
128}
129
130declare { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16>, <8 x i16>, <8 x i16>, i32)
131define { <8 x i16>, i32 } @test_vstrchs(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3) {
132  ; CHECK: immarg operand has non-immediate parameter
133  ; CHECK-NEXT: i32 %arg3
134  ; CHECK-NEXT: %ret = call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3)
135  %ret = call { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16> %arg0, <8 x i16>%arg1, <8 x i16> %arg2, i32 %arg3)
136  ret { <8 x i16>, i32 } %ret
137}
138
139declare { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32>, <4 x i32>, <4 x i32>, i32)
140define { <4 x i32>, i32 } @test_vstrcfs(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3) {
141  ; CHECK: immarg operand has non-immediate parameter
142  ; CHECK-NEXT: i32 %arg3
143  ; CHECK-NEXT: %ret = call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3)
144  %ret = call { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32> %arg0, <4 x i32>%arg1, <4 x i32> %arg2, i32 %arg3)
145  ret { <4 x i32>, i32 } %ret
146}
147
148declare { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8>, <16 x i8>, <16 x i8>, i32)
149define { <16 x i8>, i32 } @test_vstrczbs(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3) {
150  ; CHECK: immarg operand has non-immediate parameter
151  ; CHECK-NEXT: i32 %arg3
152  ; CHECK-NEXT: %ret = call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %arg0, <16 x i8> %arg1, <16 x i8> %arg2, i32 %arg3)
153  %ret = call { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8> %arg0, <16 x i8>%arg1, <16 x i8> %arg2, i32 %arg3)
154  ret { <16 x i8>, i32 } %ret
155}
156
157declare { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16>, <8 x i16>, <8 x i16>, i32)
158define { <8 x i16>, i32 } @test_vstrczhs(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3) {
159  ; CHECK: immarg operand has non-immediate parameter
160  ; CHECK-NEXT: i32 %arg3
161  ; CHECK-NEXT: %ret = call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %arg0, <8 x i16> %arg1, <8 x i16> %arg2, i32 %arg3)
162  %ret = call { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16> %arg0, <8 x i16>%arg1, <8 x i16> %arg2, i32 %arg3)
163  ret { <8 x i16>, i32 } %ret
164}
165
166declare { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32>, <4 x i32>, <4 x i32>, i32)
167define { <4 x i32>, i32 } @test_vstrczfs(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3) {
168  ; CHECK: immarg operand has non-immediate parameter
169  ; CHECK-NEXT: i32 %arg3
170  ; CHECK-NEXT: %ret = call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %arg0, <4 x i32> %arg1, <4 x i32> %arg2, i32 %arg3)
171  %ret = call { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32> %arg0, <4 x i32>%arg1, <4 x i32> %arg2, i32 %arg3)
172  ret { <4 x i32>, i32 } %ret
173}
174
175declare <16 x i8> @llvm.s390.verimb(<16 x i8>, <16 x i8>, <16 x i8>, i32)
176define <16 x i8> @test_verimb(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c, i32 %d) {
177  ; CHECK: immarg operand has non-immediate parameter
178  ; CHECK-NEXT: i32 %d
179  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.verimb(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c, i32 %d)
180  %res = call <16 x i8> @llvm.s390.verimb(<16 x i8> %a, <16 x i8> %b, <16 x i8> %c, i32 %d)
181  ret <16 x i8> %res
182}
183
184declare <8 x i16> @llvm.s390.verimh(<8 x i16>, <8 x i16>, <8 x i16>, i32)
185define <8 x i16> @test_verimh(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c, i32 %d) {
186  ; CHECK: immarg operand has non-immediate parameter
187  ; CHECK-NEXT: i32 %d
188  ; CHECK-NEXT: %res = call <8 x i16> @llvm.s390.verimh(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c, i32 %d)
189  %res = call <8 x i16> @llvm.s390.verimh(<8 x i16> %a, <8 x i16> %b, <8 x i16> %c, i32 %d)
190  ret <8 x i16> %res
191}
192
193declare <4 x i32> @llvm.s390.verimf(<4 x i32>, <4 x i32>, <4 x i32>, i32)
194define <4 x i32> @test_verimf(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, i32 %d) {
195  ; CHECK: immarg operand has non-immediate parameter
196  ; CHECK-NEXT: i32 %d
197  ; CHECK-NEXT: %res = call <4 x i32> @llvm.s390.verimf(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, i32 %d)
198  %res = call <4 x i32> @llvm.s390.verimf(<4 x i32> %a, <4 x i32> %b, <4 x i32> %c, i32 %d)
199  ret <4 x i32> %res
200}
201
202declare <2 x i64> @llvm.s390.verimg(<2 x i64>, <2 x i64>, <2 x i64>, i32)
203define <2 x i64> @test_verimg(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, i32 %d) {
204  ; CHECK: immarg operand has non-immediate parameter
205  ; CHECK-NEXT: i32 %d
206  ; CHECK-NEXT: %res = call <2 x i64> @llvm.s390.verimg(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, i32 %d)
207  %res = call <2 x i64> @llvm.s390.verimg(<2 x i64> %a, <2 x i64> %b, <2 x i64> %c, i32 %d)
208  ret <2 x i64> %res
209}
210
211declare {<2 x i64>, i32} @llvm.s390.vftcidb(<2 x double>, i32)
212define i32 @test_vftcidb(<2 x double> %a, i32 %b) {
213  ; CHECK: immarg operand has non-immediate parameter
214  ; CHECK-NEXT: i32 %b
215  ; CHECK-NEXT: %call = call { <2 x i64>, i32 } @llvm.s390.vftcidb(<2 x double> %a, i32 %b)
216  %call = call {<2 x i64>, i32} @llvm.s390.vftcidb(<2 x double> %a, i32 %b)
217  %res = extractvalue {<2 x i64>, i32} %call, 1
218  ret i32 %res
219}
220
221declare {<4 x i32>, i32} @llvm.s390.vftcisb(<4 x float>, i32)
222define i32 @test_vftcisb(<4 x float> %a, i32 %b) {
223  ; CHECK: immarg operand has non-immediate parameter
224  ; CHECK-NEXT: i32 %b
225  ; CHECK-NEXT: %call = call { <4 x i32>, i32 } @llvm.s390.vftcisb(<4 x float> %a, i32 %b)
226  %call = call {<4 x i32>, i32} @llvm.s390.vftcisb(<4 x float> %a, i32 %b)
227  %res = extractvalue {<4 x i32>, i32} %call, 1
228  ret i32 %res
229}
230
231declare <16 x i8> @llvm.s390.vfaeb(<16 x i8>, <16 x i8>, i32)
232define <16 x i8> @test_vfaeb(<16 x i8> %a, <16 x i8> %b, i32 %c) {
233  ; CHECK: immarg operand has non-immediate parameter
234  ; CHECK-NEXT: i32 %c
235  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %a, <16 x i8> %b, i32 %c)
236  %res = call <16 x i8> @llvm.s390.vfaeb(<16 x i8> %a, <16 x i8> %b, i32 %c)
237  ret <16 x i8> %res
238}
239
240declare <8 x i16> @llvm.s390.vfaeh(<8 x i16>, <8 x i16>, i32)
241define <8 x i16> @test_vfaeh(<8 x i16> %a, <8 x i16> %b, i32 %c) {
242  ; CHECK: immarg operand has non-immediate parameter
243  ; CHECK-NEXT: i32 %c
244  ; CHECK-NEXT: %res = call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %a, <8 x i16> %b, i32 %c)
245  %res = call <8 x i16> @llvm.s390.vfaeh(<8 x i16> %a, <8 x i16> %b, i32 %c)
246  ret <8 x i16> %res
247}
248
249declare <4 x i32> @llvm.s390.vfaef(<4 x i32>, <4 x i32>, i32)
250define <4 x i32> @test_vfaef(<4 x i32> %a, <4 x i32> %b, i32 %c) {
251  ; CHECK: immarg operand has non-immediate parameter
252  ; CHECK-NEXT: i32 %c
253  ; CHECK-NEXT: %res = call <4 x i32> @llvm.s390.vfaef(<4 x i32> %a, <4 x i32> %b, i32 %c)
254  %res = call <4 x i32> @llvm.s390.vfaef(<4 x i32> %a, <4 x i32> %b, i32 %c)
255  ret <4 x i32> %res
256}
257
258declare <16 x i8> @llvm.s390.vfaezb(<16 x i8>, <16 x i8>, i32)
259define <16 x i8> @test_vfaezb(<16 x i8> %a, <16 x i8> %b, i32 %c) {
260  ; CHECK: immarg operand has non-immediate parameter
261  ; CHECK-NEXT: i32 %c
262  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %a, <16 x i8> %b, i32 %c)
263  %res = call <16 x i8> @llvm.s390.vfaezb(<16 x i8> %a, <16 x i8> %b, i32 %c)
264  ret <16 x i8> %res
265}
266
267declare <8 x i16> @llvm.s390.vfaezh(<8 x i16>, <8 x i16>, i32)
268define <8 x i16> @test_vfaezh(<8 x i16> %a, <8 x i16> %b, i32 %c) {
269  ; CHECK: immarg operand has non-immediate parameter
270  ; CHECK-NEXT: i32 %c
271  ; CHECK-NEXT: %res = call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %a, <8 x i16> %b, i32 %c)
272  %res = call <8 x i16> @llvm.s390.vfaezh(<8 x i16> %a, <8 x i16> %b, i32 %c)
273  ret <8 x i16> %res
274}
275
276declare <4 x i32> @llvm.s390.vfaezf(<4 x i32>, <4 x i32>, i32)
277define <4 x i32> @test_vfaezf(<4 x i32> %a, <4 x i32> %b, i32 %c) {
278  ; CHECK: immarg operand has non-immediate parameter
279  ; CHECK-NEXT: i32 %c
280  ; CHECK-NEXT: %res = call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %a, <4 x i32> %b, i32 %c)
281  %res = call <4 x i32> @llvm.s390.vfaezf(<4 x i32> %a, <4 x i32> %b, i32 %c)
282  ret <4 x i32> %res
283}
284
285declare { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8>, <16 x i8>, i32)
286define { <16 x i8>, i32 } @test_vfaebs(<16 x i8> %a, <16 x i8> %b, i32 %c) {
287  ; CHECK: immarg operand has non-immediate parameter
288  ; CHECK-NEXT: i32 %c
289  ; CHECK-NEXT: %res = call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %a, <16 x i8> %b, i32 %c)
290  %res = call { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8> %a, <16 x i8> %b, i32 %c)
291  ret { <16 x i8>, i32 } %res
292}
293
294declare { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16>, <8 x i16>, i32)
295define { <8 x i16>, i32 } @test_vfaehs(<8 x i16> %a, <8 x i16> %b, i32 %c) {
296  ; CHECK: immarg operand has non-immediate parameter
297  ; CHECK-NEXT: i32 %c
298  ; CHECK-NEXT: %res = call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %a, <8 x i16> %b, i32 %c)
299  %res = call { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16> %a, <8 x i16> %b, i32 %c)
300  ret { <8 x i16>, i32 } %res
301}
302
303declare { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32>, <4 x i32>, i32)
304define { <4 x i32>, i32 } @test_vfaefs(<4 x i32> %a, <4 x i32> %b, i32 %c) {
305  ; CHECK: immarg operand has non-immediate parameter
306  ; CHECK-NEXT: i32 %c
307  ; CHECK-NEXT: %res = call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %a, <4 x i32> %b, i32 %c)
308  %res = call { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32> %a, <4 x i32> %b, i32 %c)
309  ret { <4 x i32>, i32 } %res
310}
311
312declare { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8>, <16 x i8>, i32)
313define { <16 x i8>, i32 } @test_vfaezbs(<16 x i8> %a, <16 x i8> %b, i32 %c) {
314  ; CHECK: immarg operand has non-immediate parameter
315  ; CHECK-NEXT: i32 %c
316  ; CHECK-NEXT: %res = call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %a, <16 x i8> %b, i32 %c)
317  %res = call { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8> %a, <16 x i8> %b, i32 %c)
318  ret { <16 x i8>, i32 } %res
319}
320
321declare { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16>, <8 x i16>, i32)
322define { <8 x i16>, i32 } @test_vfaezhs(<8 x i16> %a, <8 x i16> %b, i32 %c) {
323  ; CHECK: immarg operand has non-immediate parameter
324  ; CHECK-NEXT: i32 %c
325  ; CHECK-NEXT: %res = call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %a, <8 x i16> %b, i32 %c)
326  %res = call { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16> %a, <8 x i16> %b, i32 %c)
327  ret { <8 x i16>, i32 } %res
328}
329
330declare { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32>, <4 x i32>, i32)
331define { <4 x i32>, i32 } @test_vfaezfs(<4 x i32> %a, <4 x i32> %b, i32 %c) {
332  ; CHECK: immarg operand has non-immediate parameter
333  ; CHECK-NEXT: i32 %c
334  ; CHECK-NEXT: %res = call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %a, <4 x i32> %b, i32 %c)
335  %res = call { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32> %a, <4 x i32> %b, i32 %c)
336  ret { <4 x i32>, i32 } %res
337}
338
339declare i32 @llvm.s390.lcbb(i8 *, i32)
340define i32 @test_lcbb(i8* %a, i32 %b) {
341  ; CHECK: immarg operand has non-immediate parameter
342  ; CHECK-NEXT: i32 %b
343  ; CHECK-NEXT: %res = call i32 @llvm.s390.lcbb(i8* %a, i32 %b)
344  %res = call i32 @llvm.s390.lcbb(i8* %a, i32 %b)
345  ret i32 %res
346}
347
348declare <16 x i8> @llvm.s390.vlbb(i8 *, i32)
349define <16 x i8> @test_vlbb(i8* %a, i32 %b) {
350  ; CHECK: immarg operand has non-immediate parameter
351  ; CHECK-NEXT: i32 %b
352  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vlbb(i8* %a, i32 %b)
353  %res = call <16 x i8> @llvm.s390.vlbb(i8* %a, i32 %b)
354  ret <16 x i8> %res
355}
356
357declare <2 x i64> @llvm.s390.vpdi(<2 x i64>, <2 x i64>, i32)
358define <2 x i64> @test_vpdi(<2 x i64> %a, <2 x i64> %b, i32 %c) {
359  ; CHECK: immarg operand has non-immediate parameter
360  ; CHECK-NEXT: i32 %c
361  ; CHECK-NEXT: %res = call <2 x i64> @llvm.s390.vpdi(<2 x i64> %a, <2 x i64> %b, i32 %c)
362  %res = call <2 x i64> @llvm.s390.vpdi(<2 x i64> %a, <2 x i64> %b, i32 %c)
363  ret <2 x i64> %res
364}
365
366declare <16 x i8> @llvm.s390.vmslg(<2 x i64>, <2 x i64>, <16 x i8>, i32)
367define <16 x i8> @test_vmslg(<2 x i64> %a, <2 x i64> %b, <16 x i8> %c, i32 %d) {
368  ; CHECK: immarg operand has non-immediate parameter
369  ; CHECK-NEXT: i32 %d
370  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vmslg(<2 x i64> %a, <2 x i64> %b, <16 x i8> %c, i32 %d)
371  %res = call <16 x i8> @llvm.s390.vmslg(<2 x i64> %a, <2 x i64> %b, <16 x i8> %c, i32 %d)
372  ret <16 x i8> %res
373}
374
375declare <16 x i8> @llvm.s390.vsldb(<16 x i8>, <16 x i8>, i32)
376define <16 x i8> @test_vsldb(<16 x i8> %a, <16 x i8> %b, i32 %c) {
377  ; CHECK: immarg operand has non-immediate parameter
378  ; CHECK-NEXT: i32 %c
379  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vsldb(<16 x i8> %a, <16 x i8> %b, i32 %c)
380  %res = call <16 x i8> @llvm.s390.vsldb(<16 x i8> %a, <16 x i8> %b, i32 %c)
381  ret <16 x i8> %res
382}
383
384declare <16 x i8> @llvm.s390.vsld(<16 x i8>, <16 x i8>, i32)
385define <16 x i8> @test_vsld(<16 x i8> %a, <16 x i8> %b, i32 %c) {
386  ; CHECK: immarg operand has non-immediate parameter
387  ; CHECK-NEXT: i32 %c
388  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vsld(<16 x i8> %a, <16 x i8> %b, i32 %c)
389  %res = call <16 x i8> @llvm.s390.vsld(<16 x i8> %a, <16 x i8> %b, i32 %c)
390  ret <16 x i8> %res
391}
392
393declare <16 x i8> @llvm.s390.vsrd(<16 x i8>, <16 x i8>, i32)
394define <16 x i8> @test_vsrd(<16 x i8> %a, <16 x i8> %b, i32 %c) {
395  ; CHECK: immarg operand has non-immediate parameter
396  ; CHECK-NEXT: i32 %c
397  ; CHECK-NEXT: %res = call <16 x i8> @llvm.s390.vsrd(<16 x i8> %a, <16 x i8> %b, i32 %c)
398  %res = call <16 x i8> @llvm.s390.vsrd(<16 x i8> %a, <16 x i8> %b, i32 %c)
399  ret <16 x i8> %res
400}
401
402