Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Verifier / SystemZ / intrinsic-immarg.ll
blob5df012d3e278607b85c1ca36a585e7be9bda11af
1 ; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
3 declare <2 x double> @llvm.s390.vfidb(<2 x double>, i32, i32)
4 define 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
16 declare <2 x double> @llvm.s390.vfmaxdb(<2 x double>, <2 x double>, i32)
17 define <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
25 declare <2 x double> @llvm.s390.vfmindb(<2 x double>, <2 x double>, i32)
26 define <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
34 declare <2 x float> @llvm.s390.vfmaxsb(<2 x float>, <2 x float>, i32)
35 define <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
43 declare <2 x float> @llvm.s390.vfminsb(<2 x float>, <2 x float>, i32)
44 define <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
52 declare <4 x float> @llvm.s390.vfisb(<4 x float>, i32, i32)
53 define <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)
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)
64   ret <4 x float> %ret1
67 declare <16 x i8> @llvm.s390.vstrcb(<16 x i8>, <16 x i8>, <16 x i8>, i32)
68 define <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
76 declare <8 x i16> @llvm.s390.vstrch(<8 x i16>, <8 x i16>, <8 x i16>, i32)
77 define <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
85 declare <4 x i32> @llvm.s390.vstrcf(<4 x i32>, <4 x i32>, <4 x i32>, i32)
86 define <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
94 declare <16 x i8> @llvm.s390.vstrczb(<16 x i8>, <16 x i8>, <16 x i8>, i32)
95 define <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
103 declare <8 x i16> @llvm.s390.vstrczh(<8 x i16>, <8 x i16>, <8 x i16>, i32)
104 define <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
112 declare <4 x i32> @llvm.s390.vstrczf(<4 x i32>, <4 x i32>, <4 x i32>, i32)
113 define <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
121 declare { <16 x i8>, i32 } @llvm.s390.vstrcbs(<16 x i8>, <16 x i8>, <16 x i8>, i32)
122 define { <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
130 declare { <8 x i16>, i32 } @llvm.s390.vstrchs(<8 x i16>, <8 x i16>, <8 x i16>, i32)
131 define { <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
139 declare { <4 x i32>, i32 } @llvm.s390.vstrcfs(<4 x i32>, <4 x i32>, <4 x i32>, i32)
140 define { <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
148 declare { <16 x i8>, i32 } @llvm.s390.vstrczbs(<16 x i8>, <16 x i8>, <16 x i8>, i32)
149 define { <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
157 declare { <8 x i16>, i32 } @llvm.s390.vstrczhs(<8 x i16>, <8 x i16>, <8 x i16>, i32)
158 define { <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
166 declare { <4 x i32>, i32 } @llvm.s390.vstrczfs(<4 x i32>, <4 x i32>, <4 x i32>, i32)
167 define { <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
175 declare <16 x i8> @llvm.s390.verimb(<16 x i8>, <16 x i8>, <16 x i8>, i32)
176 define <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
184 declare <8 x i16> @llvm.s390.verimh(<8 x i16>, <8 x i16>, <8 x i16>, i32)
185 define <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
193 declare <4 x i32> @llvm.s390.verimf(<4 x i32>, <4 x i32>, <4 x i32>, i32)
194 define <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
202 declare <2 x i64> @llvm.s390.verimg(<2 x i64>, <2 x i64>, <2 x i64>, i32)
203 define <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
211 declare {<2 x i64>, i32} @llvm.s390.vftcidb(<2 x double>, i32)
212 define 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
221 declare {<4 x i32>, i32} @llvm.s390.vftcisb(<4 x float>, i32)
222 define 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
231 declare <16 x i8> @llvm.s390.vfaeb(<16 x i8>, <16 x i8>, i32)
232 define <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
240 declare <8 x i16> @llvm.s390.vfaeh(<8 x i16>, <8 x i16>, i32)
241 define <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
249 declare <4 x i32> @llvm.s390.vfaef(<4 x i32>, <4 x i32>, i32)
250 define <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
258 declare <16 x i8> @llvm.s390.vfaezb(<16 x i8>, <16 x i8>, i32)
259 define <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
267 declare <8 x i16> @llvm.s390.vfaezh(<8 x i16>, <8 x i16>, i32)
268 define <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
276 declare <4 x i32> @llvm.s390.vfaezf(<4 x i32>, <4 x i32>, i32)
277 define <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
285 declare { <16 x i8>, i32 } @llvm.s390.vfaebs(<16 x i8>, <16 x i8>, i32)
286 define { <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
294 declare { <8 x i16>, i32 } @llvm.s390.vfaehs(<8 x i16>, <8 x i16>, i32)
295 define { <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
303 declare { <4 x i32>, i32 } @llvm.s390.vfaefs(<4 x i32>, <4 x i32>, i32)
304 define { <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
312 declare { <16 x i8>, i32 } @llvm.s390.vfaezbs(<16 x i8>, <16 x i8>, i32)
313 define { <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
321 declare { <8 x i16>, i32 } @llvm.s390.vfaezhs(<8 x i16>, <8 x i16>, i32)
322 define { <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
330 declare { <4 x i32>, i32 } @llvm.s390.vfaezfs(<4 x i32>, <4 x i32>, i32)
331 define { <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
339 declare i32 @llvm.s390.lcbb(ptr, i32)
340 define i32 @test_lcbb(ptr %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(ptr %a, i32 %b)
344   %res = call i32 @llvm.s390.lcbb(ptr %a, i32 %b)
345   ret i32 %res
348 declare <16 x i8> @llvm.s390.vlbb(ptr, i32)
349 define <16 x i8> @test_vlbb(ptr %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(ptr %a, i32 %b)
353   %res = call <16 x i8> @llvm.s390.vlbb(ptr %a, i32 %b)
354   ret <16 x i8> %res
357 declare <2 x i64> @llvm.s390.vpdi(<2 x i64>, <2 x i64>, i32)
358 define <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
366 declare <16 x i8> @llvm.s390.vmslg(<2 x i64>, <2 x i64>, <16 x i8>, i32)
367 define <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
375 declare <16 x i8> @llvm.s390.vsldb(<16 x i8>, <16 x i8>, i32)
376 define <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
384 declare <16 x i8> @llvm.s390.vsld(<16 x i8>, <16 x i8>, i32)
385 define <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
393 declare <16 x i8> @llvm.s390.vsrd(<16 x i8>, <16 x i8>, i32)
394 define <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