Skip to content

Commit 30412a1

Browse files
committed
More tests
1 parent 627614e commit 30412a1

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

llvm/test/CodeGen/AMDGPU/llvm.amdgcn.readfirstlane.ll

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,49 @@ define void @test_readfirstlane2_f16(ptr addrspace(1) %out, half %src) {
161161
ret void
162162
}
163163

164+
define void @test_readfirstlane2_v2f16(ptr addrspace(1) %out, <2 x half> %src) {
165+
; CHECK-LABEL: test_readfirstlane2_v2f16:
166+
; CHECK: ; %bb.0:
167+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
168+
; CHECK-NEXT: v_readfirstlane_b32 s4, v2
169+
; CHECK-NEXT: ;;#ASMSTART
170+
; CHECK-NEXT: ; use s4
171+
; CHECK-NEXT: ;;#ASMEND
172+
; CHECK-NEXT: s_setpc_b64 s[30:31]
173+
%x = call <2 x half> @llvm.amdgcn.readfirstlane2.v2f16(<2 x half> %src)
174+
call void asm sideeffect "; use $0", "s"(<2 x half> %x)
175+
ret void
176+
}
177+
178+
define void @test_readfirstlane2_bf16(ptr addrspace(1) %out, bfloat %src) {
179+
; CHECK-LABEL: test_readfirstlane2_bf16:
180+
; CHECK: ; %bb.0:
181+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
182+
; CHECK-NEXT: v_readfirstlane_b32 s4, v2
183+
; CHECK-NEXT: ;;#ASMSTART
184+
; CHECK-NEXT: ; use s4
185+
; CHECK-NEXT: ;;#ASMEND
186+
; CHECK-NEXT: s_setpc_b64 s[30:31]
187+
%x = call bfloat @llvm.amdgcn.readfirstlane2.bf16(bfloat %src)
188+
call void asm sideeffect "; use $0", "s"(bfloat %x)
189+
ret void
190+
}
191+
192+
define void @test_readfirstlane2_v4bf16(ptr addrspace(1) %out, <4 x bfloat> %src) {
193+
; CHECK-LABEL: test_readfirstlane2_v4bf16:
194+
; CHECK: ; %bb.0:
195+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
196+
; CHECK-NEXT: v_readfirstlane_b32 s5, v3
197+
; CHECK-NEXT: v_readfirstlane_b32 s4, v2
198+
; CHECK-NEXT: ;;#ASMSTART
199+
; CHECK-NEXT: ; use s[4:5]
200+
; CHECK-NEXT: ;;#ASMEND
201+
; CHECK-NEXT: s_setpc_b64 s[30:31]
202+
%x = call <4 x bfloat> @llvm.amdgcn.readfirstlane2.v4bf16(<4 x bfloat> %src)
203+
call void asm sideeffect "; use $0", "s"(<4 x bfloat> %x)
204+
ret void
205+
}
206+
164207
define void @test_readfirstlane2_float(ptr addrspace(1) %out, float %src) {
165208
; CHECK-LABEL: test_readfirstlane2_float:
166209
; CHECK: ; %bb.0:
@@ -174,3 +217,37 @@ define void @test_readfirstlane2_float(ptr addrspace(1) %out, float %src) {
174217
call void asm sideeffect "; use $0", "s"(float %x)
175218
ret void
176219
}
220+
221+
define void @test_readfirstlane2_p0(ptr addrspace(1) %out, ptr %src) {
222+
; CHECK-LABEL: test_readfirstlane2_p0:
223+
; CHECK: ; %bb.0:
224+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
225+
; CHECK-NEXT: v_readfirstlane_b32 s5, v3
226+
; CHECK-NEXT: v_readfirstlane_b32 s4, v2
227+
; CHECK-NEXT: ;;#ASMSTART
228+
; CHECK-NEXT: ; use s[4:5]
229+
; CHECK-NEXT: ;;#ASMEND
230+
; CHECK-NEXT: s_setpc_b64 s[30:31]
231+
%x = call ptr @llvm.amdgcn.readfirstlane2.p0(ptr %src)
232+
call void asm sideeffect "; use $0", "s"(ptr %x)
233+
ret void
234+
}
235+
236+
define void @test_readfirstlane2_v3p0(ptr addrspace(1) %out, <3 x ptr> %src) {
237+
; CHECK-LABEL: test_readfirstlane2_v3p0:
238+
; CHECK: ; %bb.0:
239+
; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
240+
; CHECK-NEXT: v_readfirstlane_b32 s9, v7
241+
; CHECK-NEXT: v_readfirstlane_b32 s8, v6
242+
; CHECK-NEXT: v_readfirstlane_b32 s7, v5
243+
; CHECK-NEXT: v_readfirstlane_b32 s6, v4
244+
; CHECK-NEXT: v_readfirstlane_b32 s5, v3
245+
; CHECK-NEXT: v_readfirstlane_b32 s4, v2
246+
; CHECK-NEXT: ;;#ASMSTART
247+
; CHECK-NEXT: ; use s[4:9]
248+
; CHECK-NEXT: ;;#ASMEND
249+
; CHECK-NEXT: s_setpc_b64 s[30:31]
250+
%x = call <3 x ptr> @llvm.amdgcn.readfirstlane2.v3p0(<3 x ptr> %src)
251+
call void asm sideeffect "; use $0", "s"(<3 x ptr> %x)
252+
ret void
253+
}

0 commit comments

Comments
 (0)