| # 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: S_SETREG_IMM32_B32 1, 1601, implicit-def $mode, implicit $mode |
| ; SRAMECC-EXPANDED-NEXT: $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 |
| ... |