11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2- ; RUN: llc -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck -check-prefix=CHECK-SDAG -enable-var-scope %s
2+ ; RUN: llc -global-isel=0 -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck -check-prefixes=CHECK,CHECK-SDAG -enable-var-scope %s
3+ ; RUN: llc -global-isel=1 -new-reg-bank-select -mtriple=amdgcn--amdhsa -mcpu=fiji < %s | FileCheck -check-prefixes=CHECK,CHECK-GISEL -enable-var-scope %s
34
45define void @test_readfirstlane_p0 (ptr addrspace (1 ) %out , ptr %src ) {
56; CHECK-SDAG-LABEL: test_readfirstlane_p0:
@@ -11,6 +12,16 @@ define void @test_readfirstlane_p0(ptr addrspace(1) %out, ptr %src) {
1112; CHECK-SDAG-NEXT: ; use s[4:5]
1213; CHECK-SDAG-NEXT: ;;#ASMEND
1314; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]
15+ ;
16+ ; CHECK-GISEL-LABEL: test_readfirstlane_p0:
17+ ; CHECK-GISEL: ; %bb.0:
18+ ; CHECK-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
19+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s4, v2
20+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s5, v3
21+ ; CHECK-GISEL-NEXT: ;;#ASMSTART
22+ ; CHECK-GISEL-NEXT: ; use s[4:5]
23+ ; CHECK-GISEL-NEXT: ;;#ASMEND
24+ ; CHECK-GISEL-NEXT: s_setpc_b64 s[30:31]
1425 %x = call ptr @llvm.amdgcn.readfirstlane.p0 (ptr %src )
1526 call void asm sideeffect "; use $0" , "s" (ptr %x )
1627 ret void
@@ -30,20 +41,34 @@ define void @test_readfirstlane_v3p0(ptr addrspace(1) %out, <3 x ptr> %src) {
3041; CHECK-SDAG-NEXT: ; use s[4:9]
3142; CHECK-SDAG-NEXT: ;;#ASMEND
3243; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]
44+ ;
45+ ; CHECK-GISEL-LABEL: test_readfirstlane_v3p0:
46+ ; CHECK-GISEL: ; %bb.0:
47+ ; CHECK-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
48+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s4, v2
49+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s5, v3
50+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s6, v4
51+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s7, v5
52+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s8, v6
53+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s9, v7
54+ ; CHECK-GISEL-NEXT: ;;#ASMSTART
55+ ; CHECK-GISEL-NEXT: ; use s[4:9]
56+ ; CHECK-GISEL-NEXT: ;;#ASMEND
57+ ; CHECK-GISEL-NEXT: s_setpc_b64 s[30:31]
3358 %x = call <3 x ptr > @llvm.amdgcn.readfirstlane.v3p0 (<3 x ptr > %src )
3459 call void asm sideeffect "; use $0" , "s" (<3 x ptr > %x )
3560 ret void
3661}
3762
3863define void @test_readfirstlane_p3 (ptr addrspace (1 ) %out , ptr addrspace (3 ) %src ) {
39- ; CHECK-SDAG- LABEL: test_readfirstlane_p3:
40- ; CHECK-SDAG : ; %bb.0:
41- ; CHECK-SDAG- NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
42- ; CHECK-SDAG- NEXT: v_readfirstlane_b32 s4, v2
43- ; CHECK-SDAG- NEXT: ;;#ASMSTART
44- ; CHECK-SDAG- NEXT: ; use s4
45- ; CHECK-SDAG- NEXT: ;;#ASMEND
46- ; CHECK-SDAG- NEXT: s_setpc_b64 s[30:31]
64+ ; CHECK-LABEL: test_readfirstlane_p3:
65+ ; CHECK: ; %bb.0:
66+ ; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
67+ ; CHECK-NEXT: v_readfirstlane_b32 s4, v2
68+ ; CHECK-NEXT: ;;#ASMSTART
69+ ; CHECK-NEXT: ; use s4
70+ ; CHECK-NEXT: ;;#ASMEND
71+ ; CHECK-NEXT: s_setpc_b64 s[30:31]
4772 %x = call ptr addrspace (3 ) @llvm.amdgcn.readfirstlane.p3 (ptr addrspace (3 ) %src )
4873 call void asm sideeffect "; use $0" , "s" (ptr addrspace (3 ) %x )
4974 ret void
@@ -60,20 +85,31 @@ define void @test_readfirstlane_v3p3(ptr addrspace(1) %out, <3 x ptr addrspace(3
6085; CHECK-SDAG-NEXT: ; use s[4:6]
6186; CHECK-SDAG-NEXT: ;;#ASMEND
6287; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]
88+ ;
89+ ; CHECK-GISEL-LABEL: test_readfirstlane_v3p3:
90+ ; CHECK-GISEL: ; %bb.0:
91+ ; CHECK-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
92+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s4, v2
93+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s5, v3
94+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s6, v4
95+ ; CHECK-GISEL-NEXT: ;;#ASMSTART
96+ ; CHECK-GISEL-NEXT: ; use s[4:6]
97+ ; CHECK-GISEL-NEXT: ;;#ASMEND
98+ ; CHECK-GISEL-NEXT: s_setpc_b64 s[30:31]
6399 %x = call <3 x ptr addrspace (3 )> @llvm.amdgcn.readfirstlane.v3p3 (<3 x ptr addrspace (3 )> %src )
64100 call void asm sideeffect "; use $0" , "s" (<3 x ptr addrspace (3 )> %x )
65101 ret void
66102}
67103
68104define void @test_readfirstlane_p5 (ptr addrspace (1 ) %out , ptr addrspace (5 ) %src ) {
69- ; CHECK-SDAG- LABEL: test_readfirstlane_p5:
70- ; CHECK-SDAG : ; %bb.0:
71- ; CHECK-SDAG- NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
72- ; CHECK-SDAG- NEXT: v_readfirstlane_b32 s4, v2
73- ; CHECK-SDAG- NEXT: ;;#ASMSTART
74- ; CHECK-SDAG- NEXT: ; use s4
75- ; CHECK-SDAG- NEXT: ;;#ASMEND
76- ; CHECK-SDAG- NEXT: s_setpc_b64 s[30:31]
105+ ; CHECK-LABEL: test_readfirstlane_p5:
106+ ; CHECK: ; %bb.0:
107+ ; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
108+ ; CHECK-NEXT: v_readfirstlane_b32 s4, v2
109+ ; CHECK-NEXT: ;;#ASMSTART
110+ ; CHECK-NEXT: ; use s4
111+ ; CHECK-NEXT: ;;#ASMEND
112+ ; CHECK-NEXT: s_setpc_b64 s[30:31]
77113 %x = call ptr addrspace (5 ) @llvm.amdgcn.readfirstlane.p5 (ptr addrspace (5 ) %src )
78114 call void asm sideeffect "; use $0" , "s" (ptr addrspace (5 ) %x )
79115 ret void
@@ -90,20 +126,31 @@ define void @test_readfirstlane_v3p5(ptr addrspace(1) %out, <3 x ptr addrspace(5
90126; CHECK-SDAG-NEXT: ; use s[4:6]
91127; CHECK-SDAG-NEXT: ;;#ASMEND
92128; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]
129+ ;
130+ ; CHECK-GISEL-LABEL: test_readfirstlane_v3p5:
131+ ; CHECK-GISEL: ; %bb.0:
132+ ; CHECK-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
133+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s4, v2
134+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s5, v3
135+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s6, v4
136+ ; CHECK-GISEL-NEXT: ;;#ASMSTART
137+ ; CHECK-GISEL-NEXT: ; use s[4:6]
138+ ; CHECK-GISEL-NEXT: ;;#ASMEND
139+ ; CHECK-GISEL-NEXT: s_setpc_b64 s[30:31]
93140 %x = call <3 x ptr addrspace (5 )> @llvm.amdgcn.readfirstlane.v3p5 (<3 x ptr addrspace (5 )> %src )
94141 call void asm sideeffect "; use $0" , "s" (<3 x ptr addrspace (5 )> %x )
95142 ret void
96143}
97144
98145define void @test_readfirstlane_p6 (ptr addrspace (1 ) %out , ptr addrspace (6 ) %src ) {
99- ; CHECK-SDAG- LABEL: test_readfirstlane_p6:
100- ; CHECK-SDAG : ; %bb.0:
101- ; CHECK-SDAG- NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
102- ; CHECK-SDAG- NEXT: v_readfirstlane_b32 s4, v2
103- ; CHECK-SDAG- NEXT: ;;#ASMSTART
104- ; CHECK-SDAG- NEXT: ; use s4
105- ; CHECK-SDAG- NEXT: ;;#ASMEND
106- ; CHECK-SDAG- NEXT: s_setpc_b64 s[30:31]
146+ ; CHECK-LABEL: test_readfirstlane_p6:
147+ ; CHECK: ; %bb.0:
148+ ; CHECK-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
149+ ; CHECK-NEXT: v_readfirstlane_b32 s4, v2
150+ ; CHECK-NEXT: ;;#ASMSTART
151+ ; CHECK-NEXT: ; use s4
152+ ; CHECK-NEXT: ;;#ASMEND
153+ ; CHECK-NEXT: s_setpc_b64 s[30:31]
107154 %x = call ptr addrspace (6 ) @llvm.amdgcn.readfirstlane.p6 (ptr addrspace (6 ) %src )
108155 call void asm sideeffect "; use $0" , "s" (ptr addrspace (6 ) %x )
109156 ret void
@@ -120,6 +167,17 @@ define void @test_readfirstlane_v3p6(ptr addrspace(1) %out, <3 x ptr addrspace(6
120167; CHECK-SDAG-NEXT: ; use s[4:6]
121168; CHECK-SDAG-NEXT: ;;#ASMEND
122169; CHECK-SDAG-NEXT: s_setpc_b64 s[30:31]
170+ ;
171+ ; CHECK-GISEL-LABEL: test_readfirstlane_v3p6:
172+ ; CHECK-GISEL: ; %bb.0:
173+ ; CHECK-GISEL-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
174+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s4, v2
175+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s5, v3
176+ ; CHECK-GISEL-NEXT: v_readfirstlane_b32 s6, v4
177+ ; CHECK-GISEL-NEXT: ;;#ASMSTART
178+ ; CHECK-GISEL-NEXT: ; use s[4:6]
179+ ; CHECK-GISEL-NEXT: ;;#ASMEND
180+ ; CHECK-GISEL-NEXT: s_setpc_b64 s[30:31]
123181 %x = call <3 x ptr addrspace (6 )> @llvm.amdgcn.readfirstlane.v3p6 (<3 x ptr addrspace (6 )> %src )
124182 call void asm sideeffect "; use $0" , "s" (<3 x ptr addrspace (6 )> %x )
125183 ret void
0 commit comments