530 lines · plain
1; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s2 3declare amdgpu_cs_chain void @callee_amdgpu_cs_chain()4 5; CHECK: calling convention does not permit calls6; CHECK-NEXT: call amdgpu_cs_chain void @callee_amdgpu_cs_chain()7define amdgpu_cs_chain void @call_caller_amdgpu_cs_chain() {8entry:9 call amdgpu_cs_chain void @callee_amdgpu_cs_chain()10 ret void11}12 13; CHECK: calling convention does not permit calls14; CHECK-NEXT: call amdgpu_cs_chain void %func()15define amdgpu_cs_chain void @indirect_call_caller_amdgpu_cs_chain(ptr %func) {16entry:17 call amdgpu_cs_chain void %func()18 ret void19}20 21; CHECK: calling convention does not permit calls22; CHECK-NEXT: invoke amdgpu_cs_chain void @callee_amdgpu_cs_chain()23; CHECK-NEXT: to label %cont unwind label %unwind24define amdgpu_cs_chain void @invoke_caller_amdgpu_cs_chain() {25entry:26 invoke amdgpu_cs_chain void @callee_amdgpu_cs_chain() to label %cont unwind label %unwind27 ret void28 29cont:30 ret void31 32unwind:33 ret void34}35 36; CHECK: calling convention does not permit calls37; CHECK: invoke amdgpu_cs_chain void %func()38; CHECK-NEXT: to label %cont unwind label %unwind39define amdgpu_cs_chain void @indirect_invoke_caller_amdgpu_cs_chain(ptr %func) {40entry:41 invoke amdgpu_cs_chain void %func() to label %cont unwind label %unwind42 ret void43 44cont:45 ret void46 47unwind:48 ret void49}50 51declare amdgpu_cs_chain_preserve void @callee_amdgpu_cs_chain_preserve()52 53; CHECK: calling convention does not permit calls54; CHECK-NEXT: call amdgpu_cs_chain_preserve void @callee_amdgpu_cs_chain_preserve()55define amdgpu_cs_chain_preserve void @call_caller_amdgpu_cs_chain_preserve() {56entry:57 call amdgpu_cs_chain_preserve void @callee_amdgpu_cs_chain_preserve()58 ret void59}60 61; CHECK: calling convention does not permit calls62; CHECK-NEXT: call amdgpu_cs_chain_preserve void %func()63define amdgpu_cs_chain_preserve void @indirect_call_caller_amdgpu_cs_chain_preserve(ptr %func) {64entry:65 call amdgpu_cs_chain_preserve void %func()66 ret void67}68 69; CHECK: calling convention does not permit calls70; CHECK-NEXT: invoke amdgpu_cs_chain_preserve void @callee_amdgpu_cs_chain_preserve()71; CHECK-NEXT: to label %cont unwind label %unwind72define amdgpu_cs_chain_preserve void @invoke_caller_amdgpu_cs_chain_preserve() {73entry:74 invoke amdgpu_cs_chain_preserve void @callee_amdgpu_cs_chain_preserve() to label %cont unwind label %unwind75 ret void76 77cont:78 ret void79 80unwind:81 ret void82}83 84; CHECK: calling convention does not permit calls85; CHECK: invoke amdgpu_cs_chain_preserve void %func()86; CHECK-NEXT: to label %cont unwind label %unwind87define amdgpu_cs_chain_preserve void @indirect_invoke_caller_amdgpu_cs_chain_preserve(ptr %func) {88entry:89 invoke amdgpu_cs_chain_preserve void %func() to label %cont unwind label %unwind90 ret void91 92cont:93 ret void94 95unwind:96 ret void97}98 99declare amdgpu_cs void @callee_amdgpu_cs()100 101; CHECK: calling convention does not permit calls102; CHECK-NEXT: call amdgpu_cs void @callee_amdgpu_cs()103define amdgpu_cs void @call_caller_amdgpu_cs() {104entry:105 call amdgpu_cs void @callee_amdgpu_cs()106 ret void107}108 109; CHECK: calling convention does not permit calls110; CHECK-NEXT: call amdgpu_cs void %func()111define amdgpu_cs void @indirect_call_caller_amdgpu_cs(ptr %func) {112entry:113 call amdgpu_cs void %func()114 ret void115}116 117; CHECK: calling convention does not permit calls118; CHECK-NEXT: invoke amdgpu_cs void @callee_amdgpu_cs()119; CHECK-NEXT: to label %cont unwind label %unwind120define amdgpu_cs void @invoke_caller_amdgpu_cs() {121entry:122 invoke amdgpu_cs void @callee_amdgpu_cs() to label %cont unwind label %unwind123 ret void124 125cont:126 ret void127 128unwind:129 ret void130}131 132; CHECK: calling convention does not permit calls133; CHECK: invoke amdgpu_cs void %func()134; CHECK-NEXT: to label %cont unwind label %unwind135define amdgpu_cs void @indirect_invoke_caller_amdgpu_cs(ptr %func) {136entry:137 invoke amdgpu_cs void %func() to label %cont unwind label %unwind138 ret void139 140cont:141 ret void142 143unwind:144 ret void145}146 147declare amdgpu_es void @callee_amdgpu_es()148 149; CHECK: calling convention does not permit calls150; CHECK-NEXT: call amdgpu_es void @callee_amdgpu_es()151define amdgpu_es void @call_caller_amdgpu_es() {152entry:153 call amdgpu_es void @callee_amdgpu_es()154 ret void155}156 157; CHECK: calling convention does not permit calls158; CHECK-NEXT: call amdgpu_es void %func()159define amdgpu_es void @indirect_call_caller_amdgpu_es(ptr %func) {160entry:161 call amdgpu_es void %func()162 ret void163}164 165; CHECK: calling convention does not permit calls166; CHECK-NEXT: invoke amdgpu_es void @callee_amdgpu_es()167; CHECK-NEXT: to label %cont unwind label %unwind168define amdgpu_es void @invoke_caller_amdgpu_es() {169entry:170 invoke amdgpu_es void @callee_amdgpu_es() to label %cont unwind label %unwind171 ret void172 173cont:174 ret void175 176unwind:177 ret void178}179 180; CHECK: calling convention does not permit calls181; CHECK: invoke amdgpu_es void %func()182; CHECK-NEXT: to label %cont unwind label %unwind183define amdgpu_es void @indirect_invoke_caller_amdgpu_es(ptr %func) {184entry:185 invoke amdgpu_es void %func() to label %cont unwind label %unwind186 ret void187 188cont:189 ret void190 191unwind:192 ret void193}194 195declare amdgpu_gs void @callee_amdgpu_gs()196 197; CHECK: calling convention does not permit calls198; CHECK-NEXT: call amdgpu_gs void @callee_amdgpu_gs()199define amdgpu_gs void @call_caller_amdgpu_gs() {200entry:201 call amdgpu_gs void @callee_amdgpu_gs()202 ret void203}204 205; CHECK: calling convention does not permit calls206; CHECK-NEXT: call amdgpu_gs void %func()207define amdgpu_gs void @indirect_call_caller_amdgpu_gs(ptr %func) {208entry:209 call amdgpu_gs void %func()210 ret void211}212 213; CHECK: calling convention does not permit calls214; CHECK-NEXT: invoke amdgpu_gs void @callee_amdgpu_gs()215; CHECK-NEXT: to label %cont unwind label %unwind216define amdgpu_gs void @invoke_caller_amdgpu_gs() {217entry:218 invoke amdgpu_gs void @callee_amdgpu_gs() to label %cont unwind label %unwind219 ret void220 221cont:222 ret void223 224unwind:225 ret void226}227 228; CHECK: calling convention does not permit calls229; CHECK: invoke amdgpu_gs void %func()230; CHECK-NEXT: to label %cont unwind label %unwind231define amdgpu_gs void @indirect_invoke_caller_amdgpu_gs(ptr %func) {232entry:233 invoke amdgpu_gs void %func() to label %cont unwind label %unwind234 ret void235 236cont:237 ret void238 239unwind:240 ret void241}242 243declare amdgpu_hs void @callee_amdgpu_hs()244 245; CHECK: calling convention does not permit calls246; CHECK-NEXT: call amdgpu_hs void @callee_amdgpu_hs()247define amdgpu_hs void @call_caller_amdgpu_hs() {248entry:249 call amdgpu_hs void @callee_amdgpu_hs()250 ret void251}252 253; CHECK: calling convention does not permit calls254; CHECK-NEXT: call amdgpu_hs void %func()255define amdgpu_hs void @indirect_call_caller_amdgpu_hs(ptr %func) {256entry:257 call amdgpu_hs void %func()258 ret void259}260 261; CHECK: calling convention does not permit calls262; CHECK-NEXT: invoke amdgpu_hs void @callee_amdgpu_hs()263; CHECK-NEXT: to label %cont unwind label %unwind264define amdgpu_hs void @invoke_caller_amdgpu_hs() {265entry:266 invoke amdgpu_hs void @callee_amdgpu_hs() to label %cont unwind label %unwind267 ret void268 269cont:270 ret void271 272unwind:273 ret void274}275 276; CHECK: calling convention does not permit calls277; CHECK: invoke amdgpu_hs void %func()278; CHECK-NEXT: to label %cont unwind label %unwind279define amdgpu_hs void @indirect_invoke_caller_amdgpu_hs(ptr %func) {280entry:281 invoke amdgpu_hs void %func() to label %cont unwind label %unwind282 ret void283 284cont:285 ret void286 287unwind:288 ret void289}290 291declare amdgpu_kernel void @callee_amdgpu_kernel()292 293; CHECK: calling convention does not permit calls294; CHECK-NEXT: call amdgpu_kernel void @callee_amdgpu_kernel()295define amdgpu_kernel void @call_caller_amdgpu_kernel() {296entry:297 call amdgpu_kernel void @callee_amdgpu_kernel()298 ret void299}300 301; CHECK: calling convention does not permit calls302; CHECK-NEXT: call amdgpu_kernel void %func()303define amdgpu_kernel void @indirect_call_caller_amdgpu_kernel(ptr %func) {304entry:305 call amdgpu_kernel void %func()306 ret void307}308 309; CHECK: calling convention does not permit calls310; CHECK-NEXT: invoke amdgpu_kernel void @callee_amdgpu_kernel()311; CHECK-NEXT: to label %cont unwind label %unwind312define amdgpu_kernel void @invoke_caller_amdgpu_kernel() {313entry:314 invoke amdgpu_kernel void @callee_amdgpu_kernel() to label %cont unwind label %unwind315 ret void316 317cont:318 ret void319 320unwind:321 ret void322}323 324; CHECK: calling convention does not permit calls325; CHECK: invoke amdgpu_kernel void %func()326; CHECK-NEXT: to label %cont unwind label %unwind327define amdgpu_kernel void @indirect_invoke_caller_amdgpu_kernel(ptr %func) {328entry:329 invoke amdgpu_kernel void %func() to label %cont unwind label %unwind330 ret void331 332cont:333 ret void334 335unwind:336 ret void337}338 339declare amdgpu_ls void @callee_amdgpu_ls()340 341; CHECK: calling convention does not permit calls342; CHECK-NEXT: call amdgpu_ls void @callee_amdgpu_ls()343define amdgpu_ls void @call_caller_amdgpu_ls() {344entry:345 call amdgpu_ls void @callee_amdgpu_ls()346 ret void347}348 349; CHECK: calling convention does not permit calls350; CHECK-NEXT: call amdgpu_ls void %func()351define amdgpu_ls void @indirect_call_caller_amdgpu_ls(ptr %func) {352entry:353 call amdgpu_ls void %func()354 ret void355}356 357; CHECK: calling convention does not permit calls358; CHECK-NEXT: invoke amdgpu_ls void @callee_amdgpu_ls()359; CHECK-NEXT: to label %cont unwind label %unwind360define amdgpu_ls void @invoke_caller_amdgpu_ls() {361entry:362 invoke amdgpu_ls void @callee_amdgpu_ls() to label %cont unwind label %unwind363 ret void364 365cont:366 ret void367 368unwind:369 ret void370}371 372; CHECK: calling convention does not permit calls373; CHECK: invoke amdgpu_ls void %func()374; CHECK-NEXT: to label %cont unwind label %unwind375define amdgpu_ls void @indirect_invoke_caller_amdgpu_ls(ptr %func) {376entry:377 invoke amdgpu_ls void %func() to label %cont unwind label %unwind378 ret void379 380cont:381 ret void382 383unwind:384 ret void385}386 387declare amdgpu_ps void @callee_amdgpu_ps()388 389; CHECK: calling convention does not permit calls390; CHECK-NEXT: call amdgpu_ps void @callee_amdgpu_ps()391define amdgpu_ps void @call_caller_amdgpu_ps() {392entry:393 call amdgpu_ps void @callee_amdgpu_ps()394 ret void395}396 397; CHECK: calling convention does not permit calls398; CHECK-NEXT: call amdgpu_ps void %func()399define amdgpu_ps void @indirect_call_caller_amdgpu_ps(ptr %func) {400entry:401 call amdgpu_ps void %func()402 ret void403}404 405; CHECK: calling convention does not permit calls406; CHECK-NEXT: invoke amdgpu_ps void @callee_amdgpu_ps()407; CHECK-NEXT: to label %cont unwind label %unwind408define amdgpu_ps void @invoke_caller_amdgpu_ps() {409entry:410 invoke amdgpu_ps void @callee_amdgpu_ps() to label %cont unwind label %unwind411 ret void412 413cont:414 ret void415 416unwind:417 ret void418}419 420; CHECK: calling convention does not permit calls421; CHECK: invoke amdgpu_ps void %func()422; CHECK-NEXT: to label %cont unwind label %unwind423define amdgpu_ps void @indirect_invoke_caller_amdgpu_ps(ptr %func) {424entry:425 invoke amdgpu_ps void %func() to label %cont unwind label %unwind426 ret void427 428cont:429 ret void430 431unwind:432 ret void433}434 435declare amdgpu_vs void @callee_amdgpu_vs()436 437; CHECK: calling convention does not permit calls438; CHECK-NEXT: call amdgpu_vs void @callee_amdgpu_vs()439define amdgpu_vs void @call_caller_amdgpu_vs() {440entry:441 call amdgpu_vs void @callee_amdgpu_vs()442 ret void443}444 445; CHECK: calling convention does not permit calls446; CHECK-NEXT: call amdgpu_vs void %func()447define amdgpu_vs void @indirect_call_caller_amdgpu_vs(ptr %func) {448entry:449 call amdgpu_vs void %func()450 ret void451}452 453; CHECK: calling convention does not permit calls454; CHECK-NEXT: invoke amdgpu_vs void @callee_amdgpu_vs()455; CHECK-NEXT: to label %cont unwind label %unwind456define amdgpu_vs void @invoke_caller_amdgpu_vs() {457entry:458 invoke amdgpu_vs void @callee_amdgpu_vs() to label %cont unwind label %unwind459 ret void460 461cont:462 ret void463 464unwind:465 ret void466}467 468; CHECK: calling convention does not permit calls469; CHECK: invoke amdgpu_vs void %func()470; CHECK-NEXT: to label %cont unwind label %unwind471define amdgpu_vs void @indirect_invoke_caller_amdgpu_vs(ptr %func) {472entry:473 invoke amdgpu_vs void %func() to label %cont unwind label %unwind474 ret void475 476cont:477 ret void478 479unwind:480 ret void481}482 483declare spir_kernel void @callee_spir_kernel()484 485; CHECK: calling convention does not permit calls486; CHECK-NEXT: call spir_kernel void @callee_spir_kernel()487define spir_kernel void @call_caller_spir_kernel() {488entry:489 call spir_kernel void @callee_spir_kernel()490 ret void491}492 493; CHECK: calling convention does not permit calls494; CHECK-NEXT: call spir_kernel void %func()495define spir_kernel void @indirect_call_caller_spir_kernel(ptr %func) {496entry:497 call spir_kernel void %func()498 ret void499}500 501; CHECK: calling convention does not permit calls502; CHECK-NEXT: invoke spir_kernel void @callee_spir_kernel()503; CHECK-NEXT: to label %cont unwind label %unwind504define spir_kernel void @invoke_caller_spir_kernel() {505entry:506 invoke spir_kernel void @callee_spir_kernel() to label %cont unwind label %unwind507 ret void508 509cont:510 ret void511 512unwind:513 ret void514}515 516; CHECK: calling convention does not permit calls517; CHECK: invoke spir_kernel void %func()518; CHECK-NEXT: to label %cont unwind label %unwind519define spir_kernel void @indirect_invoke_caller_spir_kernel(ptr %func) {520entry:521 invoke spir_kernel void %func() to label %cont unwind label %unwind522 ret void523 524cont:525 ret void526 527unwind:528 ret void529}530