[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / vop-shrink-frame-index.mir
blobbac89399d035058af53a531fd6573a6b386af8ad
1 # RUN: llc -march=amdgcn -verify-machineinstrs -run-pass si-shrink-instructions -o - %s | FileCheck -check-prefix=GCN %s
2 --- |
4   define amdgpu_kernel void @fold_fi_vgpr() {
5     %alloca = alloca [4 x i32], addrspace(5)
6     ret void
7   }
9   define amdgpu_kernel void @fold_vgpr_fi() {
10     %alloca = alloca [4 x i32], addrspace(5)
11     ret void
12   }
14   define amdgpu_kernel void @fold_sgpr_fi() {
15     %alloca = alloca [4 x i32], addrspace(5)
16     ret void
17   }
19   define amdgpu_kernel void @fold_fi_sgpr() {
20     %alloca = alloca [4 x i32], addrspace(5)
21     ret void
22   }
24   define amdgpu_kernel void @fold_fi_imm() {
25     %alloca = alloca [4 x i32], addrspace(5)
26     ret void
27   }
29   define amdgpu_kernel void @fold_imm_fi() {
30     %alloca = alloca [4 x i32], addrspace(5)
31     ret void
32   }
34 ...
35 # GCN-LABEL: name: fold_fi_vgpr{{$}}
36 # GCN: %1:vgpr_32 = IMPLICIT_DEF
38 # GCN: %2:vgpr_32 = V_ADD_CO_U32_e32 %stack.0.alloca, %1, implicit-def $vcc, implicit $exec
39 name: fold_fi_vgpr
40 tracksRegLiveness: true
41 registers:
42   - { id: 0, class: vgpr_32 }
43   - { id: 1, class: vgpr_32 }
44   - { id: 2, class: vgpr_32 }
45 stack:
46   - { id: 0, name: alloca, type: default, offset: 0, size: 128, alignment: 8,
47       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
48       debug-info-expression: '', debug-info-location: '' }
49 body:             |
50   bb.0:
51     %0 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
52     %1 = IMPLICIT_DEF
53     %2, $vcc = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec
54     S_ENDPGM 0
56 ...
57 # GCN-LABEL: name: fold_vgpr_fi{{$}}
58 # GCN: %1:vgpr_32 = IMPLICIT_DEF
59 # GCN: %2:vgpr_32 = V_ADD_CO_U32_e32 %stack.0.alloca, %1, implicit-def $vcc, implicit $exec
60 name: fold_vgpr_fi
61 tracksRegLiveness: true
62 registers:
63   - { id: 0, class: vgpr_32 }
64   - { id: 1, class: vgpr_32 }
65   - { id: 2, class: vgpr_32 }
66 stack:
67   - { id: 0, name: alloca, type: default, offset: 0, size: 128, alignment: 8,
68       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
69       debug-info-expression: '', debug-info-location: '' }
70 body:             |
71   bb.0:
72     %0 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
73     %1 = IMPLICIT_DEF
74     %2, $vcc = V_ADD_CO_U32_e64 %1, %0, 0, implicit $exec
75     S_ENDPGM 0
77 ...
78 # GCN-LABEL: name: fold_sgpr_fi{{$}}
79 # GCN: %0:vgpr_32 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
80 # GCN: %1:sgpr_32 = IMPLICIT_DEF
81 # GCN: %2:vgpr_32 = V_ADD_CO_U32_e32 %1, %0, implicit-def $vcc, implicit $exec
82 name: fold_sgpr_fi
83 tracksRegLiveness: true
84 registers:
85   - { id: 0, class: vgpr_32 }
86   - { id: 1, class: sgpr_32 }
87   - { id: 2, class: vgpr_32 }
88 stack:
89   - { id: 0, name: alloca, type: default, offset: 0, size: 128, alignment: 8,
90       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
91       debug-info-expression: '', debug-info-location: '' }
92 body:             |
93   bb.0:
94     %0 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
95     %1 = IMPLICIT_DEF
96     %2, $vcc = V_ADD_CO_U32_e64 %1, %0, 0, implicit $exec
97     S_ENDPGM 0
99 ...
100 # GCN-LABEL: name: fold_fi_sgpr{{$}}
101 # GCN: %0:vgpr_32 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
102 # GCN: %1:sgpr_32 = IMPLICIT_DEF
103 # GCN: %2:vgpr_32 = V_ADD_CO_U32_e32 %1, %0, implicit-def $vcc, implicit $exec
104 name: fold_fi_sgpr
105 tracksRegLiveness: true
106 registers:
107   - { id: 0, class: vgpr_32 }
108   - { id: 1, class: sgpr_32 }
109   - { id: 2, class: vgpr_32 }
110 stack:
111   - { id: 0, name: alloca, type: default, offset: 0, size: 128, alignment: 8,
112       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
113       debug-info-expression: '', debug-info-location: '' }
114 body:             |
115   bb.0:
116     %0 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
117     %1 = IMPLICIT_DEF
118     %2, $vcc = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec
119     S_ENDPGM 0
121 # TODO: Should probably prefer folding immediate first
122 # GCN-LABEL: name: fold_fi_imm{{$}}
123 # GCN: %1:vgpr_32 = V_MOV_B32_e32 999, implicit $exec
124 # GCN: %2:vgpr_32 = V_ADD_CO_U32_e32 %stack.0.alloca, %1, implicit-def $vcc, implicit $exec
125 name: fold_fi_imm
126 tracksRegLiveness: true
127 registers:
128   - { id: 0, class: vgpr_32 }
129   - { id: 1, class: vgpr_32 }
130   - { id: 2, class: vgpr_32 }
131 stack:
132   - { id: 0, name: alloca, type: default, offset: 0, size: 128, alignment: 8,
133       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
134       debug-info-expression: '', debug-info-location: '' }
135 body:             |
136   bb.0:
137     %0 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
138     %1 = V_MOV_B32_e32 999, implicit $exec
139     %2, $vcc = V_ADD_CO_U32_e64 %0, %1, 0, implicit $exec
140     S_ENDPGM 0
143 # GCN-LABEL: name: fold_imm_fi{{$}}
144 # GCN: %0:vgpr_32 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
145 # GCN: %2:vgpr_32 = V_ADD_CO_U32_e32 999, %0, implicit-def $vcc, implicit $exec
146 name: fold_imm_fi
147 tracksRegLiveness: true
148 registers:
149   - { id: 0, class: vgpr_32 }
150   - { id: 1, class: vgpr_32 }
151   - { id: 2, class: vgpr_32 }
152 stack:
153   - { id: 0, name: alloca, type: default, offset: 0, size: 128, alignment: 8,
154       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
155       debug-info-expression: '', debug-info-location: '' }
156 body:             |
157   bb.0:
158     %0 = V_MOV_B32_e32 %stack.0.alloca, implicit $exec
159     %1 = V_MOV_B32_e32 999, implicit $exec
160     %2, $vcc = V_ADD_CO_U32_e64 %1, %0, 0, implicit $exec
161     S_ENDPGM 0