Skip to content

Commit 13a6ac7

Browse files
committed
Address comments
1 parent 63f624e commit 13a6ac7

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed

llvm/test/CodeGen/MIR/AMDGPU/preload-kernarg-mfi.ll

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,149 @@ entry:
106106
store i32 %val2, ptr addrspace(1) null
107107
ret void
108108
}
109+
110+
; MIR-LABEL: name: kernarg_preload_with_dispatch_ptr
111+
; MIR: machineFunctionInfo:
112+
; MIR: argumentInfo:
113+
; MIR: dispatchPtr: { reg: '$sgpr0_sgpr1' }
114+
; MIR: kernargSegmentPtr: { reg: '$sgpr2_sgpr3' }
115+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr4' }
116+
; MIR: numKernargPreloadSGPRs: 2
117+
118+
; ASM-LABEL: kernarg_preload_with_dispatch_ptr:
119+
; ASM: .amdhsa_user_sgpr_dispatch_ptr 1
120+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 2
121+
122+
define amdgpu_kernel void @kernarg_preload_with_dispatch_ptr(i64 inreg %arg0) #0 {
123+
entry:
124+
%val = add i64 %arg0, 1
125+
store i64 %val, ptr addrspace(1) null
126+
ret void
127+
}
128+
129+
attributes #0 = { "amdgpu-dispatch-ptr" "amdgpu-no-queue-ptr" "amdgpu-no-dispatch-id" }
130+
131+
; MIR-LABEL: name: kernarg_preload_with_queue_ptr
132+
; MIR: machineFunctionInfo:
133+
; MIR: argumentInfo:
134+
; MIR: queuePtr: { reg: '$sgpr0_sgpr1' }
135+
; MIR: kernargSegmentPtr: { reg: '$sgpr2_sgpr3' }
136+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr4' }
137+
; MIR: numKernargPreloadSGPRs: 1
138+
139+
; ASM-LABEL: kernarg_preload_with_queue_ptr:
140+
; ASM: .amdhsa_user_sgpr_queue_ptr 1
141+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 1
142+
143+
define amdgpu_kernel void @kernarg_preload_with_queue_ptr(i32 inreg %arg0) #1 {
144+
entry:
145+
%val = add i32 %arg0, 1
146+
store i32 %val, ptr addrspace(1) null
147+
ret void
148+
}
149+
150+
attributes #1 = { "amdgpu-queue-ptr" "amdgpu-no-dispatch-ptr" "amdgpu-no-dispatch-id" }
151+
152+
; MIR-LABEL: name: kernarg_preload_with_multiple_user_sgprs
153+
; MIR: machineFunctionInfo:
154+
; MIR: argumentInfo:
155+
; MIR: dispatchPtr: { reg: '$sgpr0_sgpr1' }
156+
; MIR: queuePtr: { reg: '$sgpr2_sgpr3' }
157+
; MIR: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
158+
; MIR: dispatchID: { reg: '$sgpr6_sgpr7' }
159+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr8' }
160+
; MIR: numKernargPreloadSGPRs: 2
161+
162+
; ASM-LABEL: kernarg_preload_with_multiple_user_sgprs:
163+
; ASM: .amdhsa_user_sgpr_dispatch_ptr 1
164+
; ASM: .amdhsa_user_sgpr_queue_ptr 1
165+
; ASM: .amdhsa_user_sgpr_dispatch_id 1
166+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 2
167+
168+
define amdgpu_kernel void @kernarg_preload_with_multiple_user_sgprs(i64 inreg %arg0) #5 {
169+
entry:
170+
%val = add i64 %arg0, 1
171+
store i64 %val, ptr addrspace(1) null
172+
ret void
173+
}
174+
175+
attributes #2 = { "amdgpu-dispatch-ptr" "amdgpu-queue-ptr" "amdgpu-dispatch-id" }
176+
177+
; MIR-LABEL: name: kernarg_preload_without_user_sgprs
178+
; MIR: machineFunctionInfo:
179+
; MIR: argumentInfo:
180+
; MIR: kernargSegmentPtr: { reg: '$sgpr0_sgpr1' }
181+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr2' }
182+
; MIR: numKernargPreloadSGPRs: 1
183+
184+
; ASM-LABEL: kernarg_preload_without_user_sgprs:
185+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 1
186+
187+
define amdgpu_kernel void @kernarg_preload_without_user_sgprs(i32 inreg %arg0) #3 {
188+
entry:
189+
%val = add i32 %arg0, 1
190+
store i32 %val, ptr addrspace(1) null
191+
ret void
192+
}
193+
194+
attributes #3 = { "amdgpu-no-queue-ptr" "amdgpu-no-dispatch-ptr" "amdgpu-no-dispatch-id" }
195+
196+
; MIR-LABEL: name: kernarg_preload_max_args
197+
; MIR: machineFunctionInfo:
198+
; MIR: argumentInfo:
199+
; MIR: dispatchPtr: { reg: '$sgpr0_sgpr1' }
200+
; MIR: queuePtr: { reg: '$sgpr2_sgpr3' }
201+
; MIR: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
202+
; MIR: dispatchID: { reg: '$sgpr6_sgpr7' }
203+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr8' }
204+
; MIR: numKernargPreloadSGPRs: 8
205+
206+
; ASM-LABEL: kernarg_preload_max_args:
207+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 8
208+
209+
define amdgpu_kernel void @kernarg_preload_max_args(
210+
i32 inreg %a0, i32 inreg %a1, i32 inreg %a2, i32 inreg %a3,
211+
i32 inreg %a4, i32 inreg %a5, i32 inreg %a6, i32 inreg %a7,
212+
i32 inreg %a8, i32 inreg %a9, i32 inreg %a10, i32 inreg %a11,
213+
i32 inreg %a12, i32 inreg %a13, i32 inreg %a14, i32 inreg %a15) {
214+
entry:
215+
ret void
216+
}
217+
218+
; MIR-LABEL: name: kernarg_preload_mixed_inreg_and_stack
219+
; MIR: machineFunctionInfo:
220+
; MIR: argumentInfo:
221+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr8' }
222+
; MIR: numKernargPreloadSGPRs: 2
223+
224+
; ASM-LABEL: kernarg_preload_mixed_inreg_and_stack:
225+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 2
226+
227+
define amdgpu_kernel void @kernarg_preload_mixed_inreg_and_stack(
228+
i32 inreg %preload0,
229+
i32 inreg %preload1,
230+
i32 %stack0,
231+
i32 %stack1) {
232+
entry:
233+
%val = add i32 %preload0, %preload1
234+
%val2 = add i32 %val, %stack0
235+
%val3 = add i32 %val2, %stack1
236+
store i32 %val3, ptr addrspace(1) null
237+
ret void
238+
}
239+
240+
; MIR-LABEL: name: kernarg_preload_vector_types
241+
; MIR: machineFunctionInfo:
242+
; MIR: argumentInfo:
243+
; MIR: firstKernArgPreloadReg: { reg: '$sgpr8' }
244+
; MIR: numKernargPreloadSGPRs: 4
245+
246+
; ASM-LABEL: kernarg_preload_vector_types:
247+
; ASM: .amdhsa_user_sgpr_kernarg_preload_length 4
248+
249+
define amdgpu_kernel void @kernarg_preload_vector_types(<4 x i32> inreg %vec) {
250+
entry:
251+
%elem = extractelement <4 x i32> %vec, i32 0
252+
store i32 %elem, ptr addrspace(1) null
253+
ret void
254+
}

0 commit comments

Comments
 (0)