1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=gfx900 -amdgpu-enable-flat-scratch -run-pass=si-fold-operands -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s 3 4--- 5name: test_fold_fi_scratch_load_vgpr 6stack: 7 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 } 8body: | 9 bb.0.entry: 10 ; GCN-LABEL: name: test_fold_fi_scratch_load_vgpr 11 ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec 12 ; GCN: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (load 4 from %stack.0, addrspace 5) 13 ; GCN: S_ENDPGM 0 14 %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec 15 %1:vgpr_32 = SCRATCH_LOAD_DWORD %0:vgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (load 4 from %stack.0, addrspace 5) 16 S_ENDPGM 0 17 18... 19 20--- 21name: test_fold_fi_scratch_load_sgpr 22stack: 23 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 } 24body: | 25 bb.0.entry: 26 ; GCN-LABEL: name: test_fold_fi_scratch_load_sgpr 27 ; GCN: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 %stack.0 28 ; GCN: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (load 4 from %stack.0, addrspace 5) 29 ; GCN: S_ENDPGM 0 30 %0:sgpr_32 = S_MOV_B32 %stack.0 31 %1:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %0:sgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (load 4 from %stack.0, addrspace 5) 32 S_ENDPGM 0 33 34... 35 36--- 37name: test_fold_fi_scratch_store_vgpr 38stack: 39 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 } 40body: | 41 bb.0.entry: 42 ; GCN-LABEL: name: test_fold_fi_scratch_store_vgpr 43 ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec 44 ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF 45 ; GCN: SCRATCH_STORE_DWORD_SADDR [[DEF]], %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (store 4 into %stack.0, addrspace 5) 46 ; GCN: S_ENDPGM 0 47 %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec 48 %1:vgpr_32 = IMPLICIT_DEF 49 SCRATCH_STORE_DWORD %1:vgpr_32, %0:vgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (store 4 into %stack.0, addrspace 5) 50 S_ENDPGM 0 51 52... 53 54--- 55name: test_no_fold_fi_scratch_store_vgpr 56stack: 57 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 } 58body: | 59 bb.0.entry: 60 ; GCN-LABEL: name: test_no_fold_fi_scratch_store_vgpr 61 ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec 62 ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF 63 ; GCN: SCRATCH_STORE_DWORD [[V_MOV_B32_e32_]], [[DEF]], 4, 0, implicit $exec, implicit $flat_scr :: (store 4 into %stack.0, addrspace 5) 64 ; GCN: S_ENDPGM 0 65 %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec 66 %1:vgpr_32 = IMPLICIT_DEF 67 SCRATCH_STORE_DWORD %0:vgpr_32, %1:vgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (store 4 into %stack.0, addrspace 5) 68 S_ENDPGM 0 69 70... 71 72--- 73name: test_fold_fi_scratch_store_sgpr 74stack: 75 - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 } 76body: | 77 bb.0.entry: 78 ; GCN-LABEL: name: test_fold_fi_scratch_store_sgpr 79 ; GCN: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 %stack.0 80 ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF 81 ; GCN: SCRATCH_STORE_DWORD_SADDR [[DEF]], %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (store 4 into %stack.0, addrspace 5) 82 ; GCN: S_ENDPGM 0 83 %0:sgpr_32 = S_MOV_B32 %stack.0 84 %1:vgpr_32 = IMPLICIT_DEF 85 SCRATCH_STORE_DWORD_SADDR %1:vgpr_32, %0:sgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (store 4 into %stack.0, addrspace 5) 86 S_ENDPGM 0 87 88... 89