402 lines · plain
1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s2 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 parameter6 ; CHECK-NEXT: i32 %arg17 ; 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 parameter9 ; CHECK-NEXT: i32 %arg210 ; 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 void14}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 parameter19 ; CHECK-NEXT: i32 %arg220 ; 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> %ret23}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 parameter28 ; CHECK-NEXT: i32 %arg229 ; 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> %ret32}33 34declare <4 x float> @llvm.s390.vfmaxsb(<4 x float>, <4 x float>, i32)35define <4 x float> @test_vfmaxsb(<4 x float> %arg0, <4 x float> %arg1, i32 %arg2) {36 ; CHECK: immarg operand has non-immediate parameter37 ; CHECK-NEXT: i32 %arg238 ; CHECK-NEXT: %ret = call <4 x float> @llvm.s390.vfmaxsb(<4 x float> %arg0, <4 x float> %arg1, i32 %arg2)39 %ret = call <4 x float> @llvm.s390.vfmaxsb(<4 x float> %arg0, <4 x float> %arg1, i32 %arg2)40 ret <4 x float> %ret41}42 43declare <4 x float> @llvm.s390.vfminsb(<4 x float>, <4 x float>, i32)44define <4 x float> @test_vfminsb(<4 x float> %arg0, <4 x float> %arg1, i32 %arg2) {45 ; CHECK: immarg operand has non-immediate parameter46 ; CHECK-NEXT: i32 %arg247 ; CHECK-NEXT: %ret = call <4 x float> @llvm.s390.vfminsb(<4 x float> %arg0, <4 x float> %arg1, i32 %arg2)48 %ret = call <4 x float> @llvm.s390.vfminsb(<4 x float> %arg0, <4 x float> %arg1, i32 %arg2)49 ret <4 x float> %ret50}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 parameter55 ; CHECK-NEXT: i32 %arg156 ; 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 parameter60 ; CHECK-NEXT: i32 %arg261 ; 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> %ret165}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 parameter70 ; CHECK-NEXT: i32 %arg371 ; 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> %ret74}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 parameter79 ; CHECK-NEXT: i32 %arg380 ; 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> %ret83}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 parameter88 ; CHECK-NEXT: i32 %arg389 ; 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> %ret92}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 parameter97 ; CHECK-NEXT: i32 %arg398 ; 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> %ret101}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 parameter106 ; CHECK-NEXT: i32 %arg3107 ; 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> %ret110}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 parameter115 ; CHECK-NEXT: i32 %arg3116 ; 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> %ret119}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 parameter124 ; CHECK-NEXT: i32 %arg3125 ; 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 } %ret128}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 parameter133 ; CHECK-NEXT: i32 %arg3134 ; 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 } %ret137}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 parameter142 ; CHECK-NEXT: i32 %arg3143 ; 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 } %ret146}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 parameter151 ; CHECK-NEXT: i32 %arg3152 ; 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 } %ret155}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 parameter160 ; CHECK-NEXT: i32 %arg3161 ; 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 } %ret164}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 parameter169 ; CHECK-NEXT: i32 %arg3170 ; 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 } %ret173}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 parameter178 ; CHECK-NEXT: i32 %d179 ; 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> %res182}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 parameter187 ; CHECK-NEXT: i32 %d188 ; 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> %res191}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 parameter196 ; CHECK-NEXT: i32 %d197 ; 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> %res200}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 parameter205 ; CHECK-NEXT: i32 %d206 ; 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> %res209}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 parameter214 ; CHECK-NEXT: i32 %b215 ; 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, 1218 ret i32 %res219}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 parameter224 ; CHECK-NEXT: i32 %b225 ; 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, 1228 ret i32 %res229}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 parameter234 ; CHECK-NEXT: i32 %c235 ; 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> %res238}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 parameter243 ; CHECK-NEXT: i32 %c244 ; 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> %res247}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 parameter252 ; CHECK-NEXT: i32 %c253 ; 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> %res256}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 parameter261 ; CHECK-NEXT: i32 %c262 ; 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> %res265}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 parameter270 ; CHECK-NEXT: i32 %c271 ; 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> %res274}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 parameter279 ; CHECK-NEXT: i32 %c280 ; 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> %res283}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 parameter288 ; CHECK-NEXT: i32 %c289 ; 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 } %res292}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 parameter297 ; CHECK-NEXT: i32 %c298 ; 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 } %res301}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 parameter306 ; CHECK-NEXT: i32 %c307 ; 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 } %res310}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 parameter315 ; CHECK-NEXT: i32 %c316 ; 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 } %res319}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 parameter324 ; CHECK-NEXT: i32 %c325 ; 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 } %res328}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 parameter333 ; CHECK-NEXT: i32 %c334 ; 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 } %res337}338 339declare i32 @llvm.s390.lcbb(ptr, i32)340define i32 @test_lcbb(ptr %a, i32 %b) {341 ; CHECK: immarg operand has non-immediate parameter342 ; CHECK-NEXT: i32 %b343 ; 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 %res346}347 348declare <16 x i8> @llvm.s390.vlbb(ptr, i32)349define <16 x i8> @test_vlbb(ptr %a, i32 %b) {350 ; CHECK: immarg operand has non-immediate parameter351 ; CHECK-NEXT: i32 %b352 ; 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> %res355}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 parameter360 ; CHECK-NEXT: i32 %c361 ; 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> %res364}365 366declare i128 @llvm.s390.vmslg(<2 x i64>, <2 x i64>, i128, i32)367define i128 @test_vmslg(<2 x i64> %a, <2 x i64> %b, i128 %c, i32 %d) {368 ; CHECK: immarg operand has non-immediate parameter369 ; CHECK-NEXT: i32 %d370 ; CHECK-NEXT: %res = call i128 @llvm.s390.vmslg(<2 x i64> %a, <2 x i64> %b, i128 %c, i32 %d)371 %res = call i128 @llvm.s390.vmslg(<2 x i64> %a, <2 x i64> %b, i128 %c, i32 %d)372 ret i128 %res373}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 parameter378 ; CHECK-NEXT: i32 %c379 ; 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> %res382}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 parameter387 ; CHECK-NEXT: i32 %c388 ; 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> %res391}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 parameter396 ; CHECK-NEXT: i32 %c397 ; 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> %res400}401 402