| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py | |
| # RUN: llc -mtriple=amdgpu11.00 -verify-machineinstrs -mattr=+real-true16 -run-pass=prolog-epilog -o - %s | FileCheck -check-prefix=EXPANDED %s | |
| # RUN: llc -mtriple=amdgpu12.50 -verify-machineinstrs -mattr=+real-true16 -run-pass=prolog-epilog -o - %s | FileCheck -check-prefix=SRAMECC-EXPANDED %s | |
| --- | | |
| define amdgpu_kernel void @spill_i16_alu() #0 { | |
| ret void | |
| } | |
| attributes #0 = { nounwind } | |
| ... | |
| --- | |
| name: spill_i16_alu | |
| tracksRegLiveness: true | |
| noVRegs: true | |
| machineFunctionInfo: | |
| stackPtrOffsetReg: $sgpr32 | |
| isEntryFunction: true | |
| stack: | |
| - { id: 0, type: default, offset: 0, size: 4, alignment: 4} | |
| - { id: 1, type: default, offset: 0, size: 2, alignment: 4} | |
| body: | | |
| bb.0 (%ir-block.0): | |
| ; EXPANDED-LABEL: name: spill_i16_alu | |
| ; EXPANDED: $vgpr0 = SCRATCH_LOAD_USHORT_ST 0, 0, implicit $exec, implicit $flat_scr :: (volatile dereferenceable load (s16) from %stack.0, align 4, addrspace 5) | |
| ; EXPANDED-NEXT: $vgpr0_lo16 = V_ADD_NC_U16_t16_e64 0, 123, 0, killed $vgpr0_lo16, 0, 0, implicit $exec | |
| ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_ST_t16 killed $vgpr0_lo16, 4, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s16) into %stack.1, align 4, addrspace 5) | |
| ; EXPANDED-NEXT: $vgpr0_lo16 = SCRATCH_LOAD_SHORT_D16_ST_t16 4, 3, implicit $exec, implicit $flat_scr :: ("amdgpu-last-use" "amdgpu-thread-private" load (s16) from %stack.1, align 4, addrspace 5) | |
| ; EXPANDED-NEXT: SCRATCH_STORE_SHORT_ST_t16 killed renamable $vgpr0_lo16, 0, 0, implicit $exec, implicit $flat_scr :: (volatile store (s16) into %stack.0, align 4, addrspace 5) | |
| ; EXPANDED-NEXT: S_ENDPGM 0 | |
| ; | |
| ; SRAMECC-EXPANDED-LABEL: name: spill_i16_alu | |
| ; SRAMECC-EXPANDED: $vgpr0 = SCRATCH_LOAD_USHORT_ST 0, 0, implicit $exec, implicit $flat_scr :: (volatile dereferenceable load (s16) from %stack.0, align 4, addrspace 5) | |
| ; SRAMECC-EXPANDED-NEXT: $vgpr0_lo16 = V_ADD_NC_U16_t16_e64 0, 123, 0, killed $vgpr0_lo16, 0, 0, implicit $exec | |
| ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_ST_t16 killed $vgpr0_lo16, 4, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s16) into %stack.1, align 4, addrspace 5) | |
| ; SRAMECC-EXPANDED-NEXT: $vgpr1 = SCRATCH_LOAD_USHORT_ST 4, 3, implicit $exec, implicit $flat_scr :: ("amdgpu-last-use" "amdgpu-thread-private" load (s16) from %stack.1, align 4, addrspace 5) | |
| ; SRAMECC-EXPANDED-NEXT: $vgpr0_lo16 = V_MOV_B16_t16_e64 0, killed $vgpr1_lo16, 0, implicit $exec | |
| ; SRAMECC-EXPANDED-NEXT: SCRATCH_STORE_SHORT_ST_t16 killed renamable $vgpr0_lo16, 0, 0, implicit $exec, implicit $flat_scr :: (volatile store (s16) into %stack.0, align 4, addrspace 5) | |
| ; SRAMECC-EXPANDED-NEXT: S_ENDPGM 0 | |
| $vgpr0 = SCRATCH_LOAD_USHORT_SADDR %stack.0, 0, 0, implicit $exec, implicit $flat_scr :: (volatile dereferenceable load (s16) from %stack.0, align 4, addrspace 5) | |
| $vgpr0_lo16 = V_ADD_NC_U16_t16_e64 0, 123, 0, killed $vgpr0_lo16, 0, 0, implicit $exec | |
| SI_SPILL_V16_SAVE killed $vgpr0_lo16, %stack.1, $sgpr32, 0, implicit $exec :: (store (s16) into %stack.1, addrspace 5) | |
| $vgpr0_lo16 = SI_SPILL_V16_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: ("amdgpu-last-use" load (s16) from %stack.1, addrspace 5) | |
| SCRATCH_STORE_SHORT_SADDR_t16 killed renamable $vgpr0_lo16, %stack.0, 0, 0, implicit $exec, implicit $flat_scr :: (volatile store (s16) into %stack.0, align 4, addrspace 5) | |
| S_ENDPGM 0 | |
| ... |