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