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