108 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx908 -verify-machineinstrs -run-pass=prologepilog %s -o - | FileCheck -check-prefix=CHECK %s3 4---5name: spill_a64_kill6tracksRegLiveness: true7stack:8 - { id: 0, type: spill-slot, size: 8, alignment: 4 }9machineFunctionInfo:10 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'11 stackPtrOffsetReg: '$sgpr32'12 frameOffsetReg: '$sgpr33'13body: |14 bb.0:15 liveins: $agpr0_agpr116 17 ; CHECK-LABEL: name: spill_a64_kill18 ; CHECK: liveins: $agpr0_agpr119 ; CHECK-NEXT: {{ $}}20 ; CHECK-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr0, implicit $exec, implicit-def $agpr0_agpr1, implicit $agpr0_agpr121 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec, implicit $agpr0_agpr1 :: (store (s32) into %stack.0, addrspace 5)22 ; CHECK-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr1, implicit $exec, implicit $agpr0_agpr123 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4, 0, 0, implicit $exec, implicit killed $agpr0_agpr1 :: (store (s32) into %stack.0 + 4, addrspace 5)24 SI_SPILL_A64_SAVE killed $agpr0_agpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, addrspace 5)25...26 27# Make sure there's no verifier error on the undef spill component when the value is killed.28 29---30name: spill_a64_undef_sub1_killed31tracksRegLiveness: true32stack:33 - { id: 0, type: spill-slot, size: 8, alignment: 4 }34machineFunctionInfo:35 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'36 stackPtrOffsetReg: '$sgpr32'37 frameOffsetReg: '$sgpr33'38body: |39 bb.0:40 liveins: $agpr041 42 ; CHECK-LABEL: name: spill_a64_undef_sub1_killed43 ; CHECK: liveins: $agpr044 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr0, implicit $exec, implicit-def $agpr0_agpr1, implicit $agpr0_agpr146 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec, implicit $agpr0_agpr1 :: (store (s32) into %stack.0, addrspace 5)47 ; CHECK-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr1, implicit $exec, implicit $agpr0_agpr148 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4, 0, 0, implicit $exec, implicit killed $agpr0_agpr1 :: (store (s32) into %stack.0 + 4, addrspace 5)49 SI_SPILL_A64_SAVE killed $agpr0_agpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, addrspace 5)50...51 52---53name: spill_a64_undef_sub0_killed54tracksRegLiveness: true55stack:56 - { id: 0, type: spill-slot, size: 8, alignment: 4 }57machineFunctionInfo:58 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'59 stackPtrOffsetReg: '$sgpr32'60 frameOffsetReg: '$sgpr33'61body: |62 bb.0:63 liveins: $agpr164 65 ; CHECK-LABEL: name: spill_a64_undef_sub0_killed66 ; CHECK: liveins: $agpr167 ; CHECK-NEXT: {{ $}}68 ; CHECK-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr0, implicit $exec, implicit-def $agpr0_agpr1, implicit $agpr0_agpr169 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 0, 0, 0, implicit $exec, implicit $agpr0_agpr1 :: (store (s32) into %stack.0, addrspace 5)70 ; CHECK-NEXT: $vgpr0 = V_ACCVGPR_READ_B32_e64 killed $agpr1, implicit $exec, implicit $agpr0_agpr171 ; CHECK-NEXT: BUFFER_STORE_DWORD_OFFSET killed $vgpr0, $sgpr0_sgpr1_sgpr2_sgpr3, $sgpr32, 4, 0, 0, implicit $exec, implicit killed $agpr0_agpr1 :: (store (s32) into %stack.0 + 4, addrspace 5)72 SI_SPILL_A64_SAVE killed $agpr0_agpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, addrspace 5)73...74 75---76name: spill_a32_undef77tracksRegLiveness: true78stack:79 - { id: 0, type: spill-slot, size: 4, alignment: 4 }80machineFunctionInfo:81 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'82 stackPtrOffsetReg: '$sgpr32'83 frameOffsetReg: '$sgpr33'84body: |85 bb.0:86 ; CHECK-LABEL: name: spill_a32_undef87 ; CHECK: S_ENDPGM 088 SI_SPILL_A32_SAVE undef $agpr0, %stack.0, $sgpr32, 0, implicit $exec :: (store (s32) into %stack.0, addrspace 5)89 S_ENDPGM 090...91 92---93name: spill_a64_undef94tracksRegLiveness: true95stack:96 - { id: 0, type: spill-slot, size: 8, alignment: 4 }97machineFunctionInfo:98 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'99 stackPtrOffsetReg: '$sgpr32'100 frameOffsetReg: '$sgpr33'101body: |102 bb.0:103 ; CHECK-LABEL: name: spill_a64_undef104 ; CHECK: S_ENDPGM 0105 SI_SPILL_A64_SAVE undef $agpr0_agpr1, %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, addrspace 5)106 S_ENDPGM 0107...108