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