1# RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=none -verify-machineinstrs %s -o - | FileCheck -check-prefixes=FULL,ALL %s 2# RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=none -simplify-mir -verify-machineinstrs %s -o - | FileCheck -check-prefixes=SIMPLE,ALL %s 3 4 5--- 6# ALL-LABEL: name: kernel0 7# FULL: machineFunctionInfo: 8# FULL-NEXT: explicitKernArgSize: 128 9# FULL-NEXT: maxKernArgAlign: 64 10# FULL-NEXT: ldsSize: 2048 11# FULL-NEXT: gdsSize: 256 12# FULL-NEXT: dynLDSAlign: 1 13# FULL-NEXT: isEntryFunction: true 14# FULL-NEXT: noSignedZerosFPMath: false 15# FULL-NEXT: memoryBound: true 16# FULL-NEXT: waveLimiter: true 17# FULL-NEXT: hasSpilledSGPRs: false 18# FULL-NEXT: hasSpilledVGPRs: false 19# FULL-NEXT: scratchRSrcReg: '$sgpr8_sgpr9_sgpr10_sgpr11' 20# FULL-NEXT: frameOffsetReg: '$sgpr12' 21# FULL-NEXT: stackPtrOffsetReg: '$sgpr13' 22# FULL-NEXT: bytesInStackArgArea: 0 23# FULL-NEXT: returnsVoid: true 24# FULL-NEXT: argumentInfo: 25# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 26# FULL-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 27# FULL-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 28# FULL-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 29# FULL-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 30# FULL-NEXT: workGroupIDX: { reg: '$sgpr6' } 31# FULL-NEXT: workGroupIDY: { reg: '$sgpr13' } 32# FULL-NEXT: workGroupIDZ: { reg: '$sgpr14' } 33# FULL-NEXT: LDSKernelId: { reg: '$sgpr15' } 34# FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } 35# FULL-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 36# FULL-NEXT: workItemIDX: { reg: '$vgpr0' } 37# FULL-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 38# FULL-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 39# FULL-NEXT: mode: 40# FULL-NEXT: ieee: true 41# FULL-NEXT: dx10-clamp: true 42# FULL-NEXT: fp32-input-denormals: true 43# FULL-NEXT: fp32-output-denormals: true 44# FULL-NEXT: fp64-fp16-input-denormals: true 45# FULL-NEXT: fp64-fp16-output-denormals: true 46# FULL-NEXT: highBitsOf32BitAddress: 0 47# FULL-NEXT: occupancy: 10 48# FULL-NEXT: vgprForAGPRCopy: '' 49# FULL-NEXT: body: 50 51# SIMPLE: machineFunctionInfo: 52# SIMPLE-NEXT: explicitKernArgSize: 128 53# SIMPLE-NEXT: maxKernArgAlign: 64 54# SIMPLE-NEXT: ldsSize: 2048 55# SIMPLE-NEXT: gdsSize: 256 56# SIMPLE-NEXT: isEntryFunction: true 57# SIMPLE-NEXT: memoryBound: true 58# SIMPLE-NEXT: waveLimiter: true 59# SIMPLE-NEXT: scratchRSrcReg: '$sgpr8_sgpr9_sgpr10_sgpr11' 60# SIMPLE-NEXT: frameOffsetReg: '$sgpr12' 61# SIMPLE-NEXT: stackPtrOffsetReg: '$sgpr13' 62# SIMPLE-NEXT: argumentInfo: 63# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 64# SIMPLE-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 65# SIMPLE-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 66# SIMPLE-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 67# SIMPLE-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 68# SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr6' } 69# SIMPLE-NEXT: workGroupIDY: { reg: '$sgpr13' } 70# SIMPLE-NEXT: workGroupIDZ: { reg: '$sgpr14' } 71# SIMPLE-NEXT: LDSKernelId: { reg: '$sgpr15' } 72# SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' } 73# SIMPLE-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 74# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr0' } 75# SIMPLE-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 76# SIMPLE-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 77# SIMPLE-NEXT: occupancy: 10 78# SIMPLE-NEXT: body: 79name: kernel0 80machineFunctionInfo: 81 explicitKernArgSize: 128 82 maxKernArgAlign: 64 83 ldsSize: 2048 84 gdsSize: 256 85 isEntryFunction: true 86 noSignedZerosFPMath: false 87 memoryBound: true 88 waveLimiter: true 89 scratchRSrcReg: '$sgpr8_sgpr9_sgpr10_sgpr11' 90 frameOffsetReg: '$sgpr12' 91 stackPtrOffsetReg: '$sgpr13' 92 argumentInfo: 93 privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 94 kernargSegmentPtr: { reg: '$sgpr4_sgpr5' } 95 workGroupIDX: { reg: '$sgpr6' } 96 privateSegmentWaveByteOffset: { reg: '$sgpr7' } 97 workItemIDX: { reg: '$vgpr0' } 98body: | 99 bb.0: 100 S_ENDPGM 0 101 102... 103 104# FIXME: Should be able to not print section for simple 105--- 106# ALL-LABEL: name: no_mfi 107# FULL: machineFunctionInfo: 108# FULL-NEXT: explicitKernArgSize: 0 109# FULL-NEXT: maxKernArgAlign: 1 110# FULL-NEXT: ldsSize: 0 111# FULL-NEXT: gdsSize: 0 112# FULL-NEXT: dynLDSAlign: 1 113# FULL-NEXT: isEntryFunction: false 114# FULL-NEXT: noSignedZerosFPMath: false 115# FULL-NEXT: memoryBound: false 116# FULL-NEXT: waveLimiter: false 117# FULL-NEXT: hasSpilledSGPRs: false 118# FULL-NEXT: hasSpilledVGPRs: false 119# FULL-NEXT: scratchRSrcReg: '$private_rsrc_reg' 120# FULL-NEXT: frameOffsetReg: '$fp_reg' 121# FULL-NEXT: stackPtrOffsetReg: '$sp_reg' 122# FULL-NEXT: bytesInStackArgArea: 0 123# FULL-NEXT: returnsVoid: true 124# FULL-NEXT: argumentInfo: 125# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 126# FULL-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 127# FULL-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 128# FULL-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 129# FULL-NEXT: workGroupIDX: { reg: '$sgpr12' } 130# FULL-NEXT: workGroupIDY: { reg: '$sgpr13' } 131# FULL-NEXT: workGroupIDZ: { reg: '$sgpr14' } 132# FULL-NEXT: LDSKernelId: { reg: '$sgpr15' } 133# FULL-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 134# FULL-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 135# FULL-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 136# FULL-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 137# FULL-NEXT: mode: 138# FULL-NEXT: ieee: true 139# FULL-NEXT: dx10-clamp: true 140# FULL-NEXT: fp32-input-denormals: true 141# FULL-NEXT: fp32-output-denormals: true 142# FULL-NEXT: fp64-fp16-input-denormals: true 143# FULL-NEXT: fp64-fp16-output-denormals: true 144# FULL-NEXT: highBitsOf32BitAddress: 0 145# FULL-NEXT: occupancy: 10 146# FULL-NEXT: vgprForAGPRCopy: '' 147# FULL-NEXT: body: 148 149# SIMPLE: machineFunctionInfo: 150# SIMPLE-NEXT: maxKernArgAlign: 1 151# SIMPLE-NEXT: argumentInfo: 152# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 153# SIMPLE-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 154# SIMPLE-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 155# SIMPLE-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 156# SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr12' } 157# SIMPLE-NEXT: workGroupIDY: { reg: '$sgpr13' } 158# SIMPLE-NEXT: workGroupIDZ: { reg: '$sgpr14' } 159# SIMPLE-NEXT: LDSKernelId: { reg: '$sgpr15' } 160# SIMPLE-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 161# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 162# SIMPLE-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 163# SIMPLE-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 164# SIMPLE-NEXT: occupancy: 10 165# SIMPLE-NEXT: body: 166 167name: no_mfi 168body: | 169 bb.0: 170 S_ENDPGM 0 171 172... 173 174--- 175# ALL-LABEL: name: empty_mfi 176# FULL: machineFunctionInfo: 177# FULL-NEXT: explicitKernArgSize: 0 178# FULL-NEXT: maxKernArgAlign: 1 179# FULL-NEXT: ldsSize: 0 180# FULL-NEXT: gdsSize: 0 181# FULL-NEXT: dynLDSAlign: 1 182# FULL-NEXT: isEntryFunction: false 183# FULL-NEXT: noSignedZerosFPMath: false 184# FULL-NEXT: memoryBound: false 185# FULL-NEXT: waveLimiter: false 186# FULL-NEXT: hasSpilledSGPRs: false 187# FULL-NEXT: hasSpilledVGPRs: false 188# FULL-NEXT: scratchRSrcReg: '$private_rsrc_reg' 189# FULL-NEXT: frameOffsetReg: '$fp_reg' 190# FULL-NEXT: stackPtrOffsetReg: '$sp_reg' 191# FULL-NEXT: bytesInStackArgArea: 0 192# FULL-NEXT: returnsVoid: true 193# FULL-NEXT: argumentInfo: 194# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 195# FULL-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 196# FULL-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 197# FULL-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 198# FULL-NEXT: workGroupIDX: { reg: '$sgpr12' } 199# FULL-NEXT: workGroupIDY: { reg: '$sgpr13' } 200# FULL-NEXT: workGroupIDZ: { reg: '$sgpr14' } 201# FULL-NEXT: LDSKernelId: { reg: '$sgpr15' } 202# FULL-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 203# FULL-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 204# FULL-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 205# FULL-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 206# FULL-NEXT: mode: 207# FULL-NEXT: ieee: true 208# FULL-NEXT: dx10-clamp: true 209# FULL-NEXT: fp32-input-denormals: true 210# FULL-NEXT: fp32-output-denormals: true 211# FULL-NEXT: fp64-fp16-input-denormals: true 212# FULL-NEXT: fp64-fp16-output-denormals: true 213# FULL-NEXT: highBitsOf32BitAddress: 0 214# FULL-NEXT: occupancy: 10 215# FULL-NEXT: vgprForAGPRCopy: '' 216# FULL-NEXT: body: 217 218# SIMPLE: machineFunctionInfo: 219# SIMPLE-NEXT: maxKernArgAlign: 1 220# SIMPLE-NEXT: argumentInfo: 221# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 222# SIMPLE-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 223# SIMPLE-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 224# SIMPLE-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 225# SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr12' } 226# SIMPLE-NEXT: workGroupIDY: { reg: '$sgpr13' } 227# SIMPLE-NEXT: workGroupIDZ: { reg: '$sgpr14' } 228# SIMPLE-NEXT: LDSKernelId: { reg: '$sgpr15' } 229# SIMPLE-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 230# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 231# SIMPLE-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 232# SIMPLE-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 233# SIMPLE-NEXT: occupancy: 10 234# SIMPLE-NEXT: body: 235 236name: empty_mfi 237machineFunctionInfo: 238body: | 239 bb.0: 240 S_ENDPGM 0 241 242... 243 244--- 245# ALL-LABEL: name: empty_mfi_entry_func 246# FULL: machineFunctionInfo: 247# FULL-NEXT: explicitKernArgSize: 0 248# FULL-NEXT: maxKernArgAlign: 1 249# FULL-NEXT: ldsSize: 0 250# FULL-NEXT: gdsSize: 0 251# FULL-NEXT: dynLDSAlign: 1 252# FULL-NEXT: isEntryFunction: true 253# FULL-NEXT: noSignedZerosFPMath: false 254# FULL-NEXT: memoryBound: false 255# FULL-NEXT: waveLimiter: false 256# FULL-NEXT: hasSpilledSGPRs: false 257# FULL-NEXT: hasSpilledVGPRs: false 258# FULL-NEXT: scratchRSrcReg: '$private_rsrc_reg' 259# FULL-NEXT: frameOffsetReg: '$fp_reg' 260# FULL-NEXT: stackPtrOffsetReg: '$sp_reg' 261# FULL-NEXT: bytesInStackArgArea: 0 262# FULL-NEXT: returnsVoid: true 263# FULL-NEXT: argumentInfo: 264# FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 265# FULL-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 266# FULL-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 267# FULL-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 268# FULL-NEXT: workGroupIDX: { reg: '$sgpr12' } 269# FULL-NEXT: workGroupIDY: { reg: '$sgpr13' } 270# FULL-NEXT: workGroupIDZ: { reg: '$sgpr14' } 271# FULL-NEXT: LDSKernelId: { reg: '$sgpr15' } 272# FULL-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 273# FULL-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 274# FULL-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 275# FULL-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 276# FULL-NEXT: mode: 277# FULL-NEXT: ieee: true 278# FULL-NEXT: dx10-clamp: true 279# FULL-NEXT: fp32-input-denormals: true 280# FULL-NEXT: fp32-output-denormals: true 281# FULL-NEXT: fp64-fp16-input-denormals: true 282# FULL-NEXT: fp64-fp16-output-denormals: true 283# FULL-NEXT: highBitsOf32BitAddress: 0 284# FULL-NEXT: occupancy: 10 285# FULL-NEXT: vgprForAGPRCopy: '' 286# FULL-NEXT: body: 287 288# SIMPLE: machineFunctionInfo: 289# SIMPLE-NEXT: maxKernArgAlign: 1 290# SIMPLE-NEXT: isEntryFunction: true 291# SIMPLE-NEXT: argumentInfo: 292# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 293# SIMPLE-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 294# SIMPLE-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 295# SIMPLE-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 296# SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr12' } 297# SIMPLE-NEXT: workGroupIDY: { reg: '$sgpr13' } 298# SIMPLE-NEXT: workGroupIDZ: { reg: '$sgpr14' } 299# SIMPLE-NEXT: LDSKernelId: { reg: '$sgpr15' } 300# SIMPLE-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 301# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 302# SIMPLE-NEXT: workItemIDY: { reg: '$vgpr31', mask: 1047552 } 303# SIMPLE-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 304# SIMPLE-NEXT: occupancy: 10 305# SIMPLE-NEXT: body: 306 307name: empty_mfi_entry_func 308machineFunctionInfo: 309 isEntryFunction: true 310body: | 311 bb.0: 312 S_ENDPGM 0 313 314... 315 316--- 317# ALL-LABEL: name: default_regs_mfi 318 319# FULL: scratchRSrcReg: '$private_rsrc_reg' 320# FULL-NEXT: frameOffsetReg: '$fp_reg' 321# FULL-NEXT: stackPtrOffsetReg: '$sp_reg' 322 323# SIMPLE-NOT: scratchRSrcReg 324# SIMPLE-NOT:: stackPtrOffsetReg 325name: default_regs_mfi 326machineFunctionInfo: 327 scratchRSrcReg: '$private_rsrc_reg' 328 329body: | 330 bb.0: 331 S_ENDPGM 0 332 333... 334 335--- 336# ALL-LABEL: name: fake_stack_arginfo 337 338# FULL: argumentInfo: 339# FULL: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 340# FULL: flatScratchInit: { offset: 4 } 341# FULL: workItemIDY: { reg: '$vgpr0', mask: 65280 } 342 343# SIMPLE: argumentInfo: 344# SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' } 345# SIMPLE-NEXT: dispatchPtr: { reg: '$sgpr4_sgpr5' } 346# SIMPLE-NEXT: queuePtr: { reg: '$sgpr6_sgpr7' } 347# SIMPLE-NEXT: dispatchID: { reg: '$sgpr10_sgpr11' } 348# SIMPLE-NEXT: flatScratchInit: { offset: 4 } 349# SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr12' } 350# SIMPLE-NEXT: workGroupIDY: { reg: '$sgpr13' } 351# SIMPLE-NEXT: workGroupIDZ: { reg: '$sgpr14' } 352# SIMPLE-NEXT: LDSKernelId: { reg: '$sgpr15' } 353# SIMPLE-NEXT: implicitArgPtr: { reg: '$sgpr8_sgpr9' } 354# SIMPLE-NEXT: workItemIDX: { reg: '$vgpr31', mask: 1023 } 355# SIMPLE-NEXT: workItemIDY: { reg: '$vgpr0', mask: 65280 } 356# SIMPLE-NEXT: workItemIDZ: { reg: '$vgpr31', mask: 1072693248 } 357name: fake_stack_arginfo 358machineFunctionInfo: 359 argumentInfo: 360 flatScratchInit: { offset: 4 } 361 workItemIDY: { reg: '$vgpr0' , mask: 0xff00 } 362 363body: | 364 bb.0: 365 S_ENDPGM 0 366 367... 368 369--- 370# ALL-LABEL: name: parse_mode 371# ALL: mode: 372# ALL-NEXT: ieee: false 373# ALL-NEXT: dx10-clamp: false 374# ALL-NEXT: fp32-input-denormals: false 375# ALL-NEXT: fp32-output-denormals: false 376# ALL-NEXT: fp64-fp16-input-denormals: false 377# ALL-NEXT: fp64-fp16-output-denormals: false 378 379name: parse_mode 380machineFunctionInfo: 381 mode: 382 ieee: false 383 dx10-clamp: false 384 fp32-input-denormals: false 385 fp32-output-denormals: false 386 fp64-fp16-input-denormals: false 387 fp64-fp16-output-denormals: false 388 389body: | 390 bb.0: 391 S_ENDPGM 0 392 393... 394 395 396--- 397# ALL-LABEL: name: parse_spilled_regs 398# ALL: machineFunctionInfo: 399# ALL: hasSpilledSGPRs: true 400# ALL-NEXT: hasSpilledVGPRs: true 401 402name: parse_spilled_regs 403machineFunctionInfo: 404 hasSpilledSGPRs: true 405 hasSpilledVGPRs: true 406 407body: | 408 bb.0: 409 S_ENDPGM 0 410 411... 412 413--- 414# ALL-LABEL: name: dyn_lds_with_alignment 415 416# FULL: ldsSize: 0 417# FULL-NEXT: gdsSize: 0 418# FULL-NEXT: dynLDSAlign: 8 419 420# SIMPLE: dynLDSAlign: 8 421name: dyn_lds_with_alignment 422machineFunctionInfo: 423 dynLDSAlign: 8 424 425body: | 426 bb.0: 427 S_ENDPGM 0 428 429... 430 431--- 432# ALL-LABEL: name: occupancy_0 433# ALL: occupancy: 10 434name: occupancy_0 435machineFunctionInfo: 436 occupancy: 0 437 438body: | 439 bb.0: 440 S_ENDPGM 0 441 442... 443 444--- 445# ALL-LABEL: name: occupancy_3 446# ALL: occupancy: 3 447name: occupancy_3 448machineFunctionInfo: 449 occupancy: 3 450 451body: | 452 bb.0: 453 S_ENDPGM 0 454 455... 456 457--- 458# ALL-LABEL: name: scavenge_fi 459# ALL: scavengeFI: '%stack.0' 460name: scavenge_fi 461stack: 462 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 } 463machineFunctionInfo: 464 scavengeFI: '%stack.0' 465 466body: | 467 bb.0: 468 S_ENDPGM 0 469 470... 471 472--- 473# ALL-LABEL: name: bytes_in_stack_arg_area 474# ALL: bytesInStackArgArea: 444 475name: bytes_in_stack_arg_area 476machineFunctionInfo: 477 bytesInStackArgArea: 444 478body: | 479 bb.0: 480 SI_RETURN 481 482... 483 484--- 485# ALL-LABEL: name: returns_void_true 486# FULL: returnsVoid: true 487# SIMPLE-NOT: returnsVoid 488name: returns_void_true 489machineFunctionInfo: 490 returnsVoid: true 491body: | 492 bb.0: 493 SI_RETURN 494 495... 496--- 497# ALL-LABEL: name: returns_void_false 498# ALL: returnsVoid: false 499name: returns_void_false 500machineFunctionInfo: 501 returnsVoid: false 502body: | 503 bb.0: 504 SI_RETURN 505 506... 507 508--- 509# ALL-LABEL: name: vgpr_for_agpr_copy 510# ALL: vgprForAGPRCopy: '$vgpr2' 511name: vgpr_for_agpr_copy 512machineFunctionInfo: 513 vgprForAGPRCopy: '$vgpr2' 514body: | 515 bb.0: 516 SI_RETURN 517 518... 519 520--- 521# ALL-LABEL: name: vgpr_for_agpr_copy_noreg 522# FULL: vgprForAGPRCopy: '' 523# SIMPLE-NOT: vgprForAGPRCopy 524name: vgpr_for_agpr_copy_noreg 525machineFunctionInfo: 526 vgprForAGPRCopy: '$noreg' 527body: | 528 bb.0: 529 SI_RETURN 530 531... 532