blob: d7a0b55624db1c27de7c5ed49f78a11ec83e091b [file] [edit]
# 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
...