| # RUN: llc -mtriple=amdgcn -run-pass=none -verify-machineinstrs -o - %s | FileCheck %s | 
 | # RUN: llc -mtriple=amdgcn  -run-pass mir-canonicalizer -verify-machineinstrs -o - %s | 
 | # RUN: llc -mtriple=amdgcn  -run-pass mir-canonicalizer -mir-vreg-namer-use-stable-hash -verify-machineinstrs -o - %s | 
 |  | 
 | # Previously getReservedRegs was called before parsing | 
 | # machineFunctionInfo, but the AMDGPU implementation depends on | 
 | # setting register fields to reserve there. $sgpr50 would then not be | 
 | # reserved, resulting in a verifier error from an undefined register. | 
 |  | 
 | --- | 
 | # CHECK: machineFunctionInfo: | 
 | # CHECK: isEntryFunction: true | 
 | # CHECK: scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3' | 
 | # CHECK: frameOffsetReg:  '$sgpr50' | 
 | # CHECK: renamable $vgpr0 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr50, 4, 0, 0, implicit $exec :: (load (s32), addrspace 5) | 
 | name: reserve_correct_register | 
 | tracksRegLiveness: true | 
 | machineFunctionInfo: | 
 |   isEntryFunction: true | 
 |   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3' | 
 |   frameOffsetReg:  '$sgpr50' | 
 | stack: | 
 |   - { id: 0, type: default, offset: 0, size: 4, alignment: 4 } | 
 |  | 
 | body:             | | 
 |   bb.0: | 
 |     renamable $vgpr0 = BUFFER_LOAD_DWORD_OFFEN %stack.0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr50, 4, 0, 0, implicit $exec :: (load (s32), addrspace 5) | 
 |     S_ENDPGM 0 | 
 | ... |