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: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)
12    ; GCN: S_ENDPGM 0
13    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec
14    %1:vgpr_32 = SCRATCH_LOAD_DWORD %0:vgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)
15    S_ENDPGM 0
16
17...
18
19---
20name:            test_fold_fi_scratch_load_sgpr
21stack:
22  - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }
23body:             |
24  bb.0.entry:
25    ; GCN-LABEL: name: test_fold_fi_scratch_load_sgpr
26    ; GCN: [[SCRATCH_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)
27    ; GCN: S_ENDPGM 0
28    %0:sgpr_32 = S_MOV_B32 %stack.0
29    %1:vgpr_32 = SCRATCH_LOAD_DWORD_SADDR %0:sgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from %stack.0, addrspace 5)
30    S_ENDPGM 0
31
32...
33
34---
35name:            test_fold_fi_scratch_store_vgpr
36stack:
37  - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }
38body:             |
39  bb.0.entry:
40    ; GCN-LABEL: name: test_fold_fi_scratch_store_vgpr
41    ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
42    ; GCN: SCRATCH_STORE_DWORD_SADDR [[DEF]], %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)
43    ; GCN: S_ENDPGM 0
44    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec
45    %1:vgpr_32 = IMPLICIT_DEF
46    SCRATCH_STORE_DWORD %1:vgpr_32, %0:vgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)
47    S_ENDPGM 0
48
49...
50
51---
52name:            test_no_fold_fi_scratch_store_vgpr
53stack:
54  - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }
55body:             |
56  bb.0.entry:
57    ; GCN-LABEL: name: test_no_fold_fi_scratch_store_vgpr
58    ; GCN: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec
59    ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
60    ; GCN: SCRATCH_STORE_DWORD [[V_MOV_B32_e32_]], [[DEF]], 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)
61    ; GCN: S_ENDPGM 0
62    %0:vgpr_32 = V_MOV_B32_e32 %stack.0, implicit $exec
63    %1:vgpr_32 = IMPLICIT_DEF
64    SCRATCH_STORE_DWORD %0:vgpr_32, %1:vgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)
65    S_ENDPGM 0
66
67...
68
69---
70name:            test_fold_fi_scratch_store_sgpr
71stack:
72  - { id: 0, name: '', type: spill-slot, offset: 0, size: 4, alignment: 4 }
73body:             |
74  bb.0.entry:
75    ; GCN-LABEL: name: test_fold_fi_scratch_store_sgpr
76    ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
77    ; GCN: SCRATCH_STORE_DWORD_SADDR [[DEF]], %stack.0, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)
78    ; GCN: S_ENDPGM 0
79    %0:sgpr_32 = S_MOV_B32 %stack.0
80    %1:vgpr_32 = IMPLICIT_DEF
81    SCRATCH_STORE_DWORD_SADDR %1:vgpr_32, %0:sgpr_32, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into %stack.0, addrspace 5)
82    S_ENDPGM 0
83
84...
85