xref: /aosp_15_r20/external/llvm/test/CodeGen/AMDGPU/load-constant-i1.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s | FileCheck -check-prefix=GCN -check-prefix=FUNC %s
3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=r600 -mcpu=cypress < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_i1:
6*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ubyte
7*9880d681SAndroid Build Coastguard Worker; GCN: v_and_b32_e32 v{{[0-9]+}}, 1
8*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_byte
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8
11*9880d681SAndroid Build Coastguard Worker; EG: AND_INT
12*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_i1(i1 addrspace(1)* %out, i1 addrspace(2)* nocapture %in) #0 {
13*9880d681SAndroid Build Coastguard Worker  %load = load i1, i1 addrspace(2)* %in
14*9880d681SAndroid Build Coastguard Worker  store i1 %load, i1 addrspace(1)* %out
15*9880d681SAndroid Build Coastguard Worker  ret void
16*9880d681SAndroid Build Coastguard Worker}
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v2i1:
19*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v2i1(<2 x i1> addrspace(1)* %out, <2 x i1> addrspace(2)* nocapture %in) #0 {
20*9880d681SAndroid Build Coastguard Worker  %load = load <2 x i1>, <2 x i1> addrspace(2)* %in
21*9880d681SAndroid Build Coastguard Worker  store <2 x i1> %load, <2 x i1> addrspace(1)* %out
22*9880d681SAndroid Build Coastguard Worker  ret void
23*9880d681SAndroid Build Coastguard Worker}
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v3i1:
26*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v3i1(<3 x i1> addrspace(1)* %out, <3 x i1> addrspace(2)* nocapture %in) #0 {
27*9880d681SAndroid Build Coastguard Worker  %load = load <3 x i1>, <3 x i1> addrspace(2)* %in
28*9880d681SAndroid Build Coastguard Worker  store <3 x i1> %load, <3 x i1> addrspace(1)* %out
29*9880d681SAndroid Build Coastguard Worker  ret void
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v4i1:
33*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v4i1(<4 x i1> addrspace(1)* %out, <4 x i1> addrspace(2)* nocapture %in) #0 {
34*9880d681SAndroid Build Coastguard Worker  %load = load <4 x i1>, <4 x i1> addrspace(2)* %in
35*9880d681SAndroid Build Coastguard Worker  store <4 x i1> %load, <4 x i1> addrspace(1)* %out
36*9880d681SAndroid Build Coastguard Worker  ret void
37*9880d681SAndroid Build Coastguard Worker}
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v8i1:
40*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v8i1(<8 x i1> addrspace(1)* %out, <8 x i1> addrspace(2)* nocapture %in) #0 {
41*9880d681SAndroid Build Coastguard Worker  %load = load <8 x i1>, <8 x i1> addrspace(2)* %in
42*9880d681SAndroid Build Coastguard Worker  store <8 x i1> %load, <8 x i1> addrspace(1)* %out
43*9880d681SAndroid Build Coastguard Worker  ret void
44*9880d681SAndroid Build Coastguard Worker}
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v16i1:
47*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v16i1(<16 x i1> addrspace(1)* %out, <16 x i1> addrspace(2)* nocapture %in) #0 {
48*9880d681SAndroid Build Coastguard Worker  %load = load <16 x i1>, <16 x i1> addrspace(2)* %in
49*9880d681SAndroid Build Coastguard Worker  store <16 x i1> %load, <16 x i1> addrspace(1)* %out
50*9880d681SAndroid Build Coastguard Worker  ret void
51*9880d681SAndroid Build Coastguard Worker}
52*9880d681SAndroid Build Coastguard Worker
53*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v32i1:
54*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v32i1(<32 x i1> addrspace(1)* %out, <32 x i1> addrspace(2)* nocapture %in) #0 {
55*9880d681SAndroid Build Coastguard Worker  %load = load <32 x i1>, <32 x i1> addrspace(2)* %in
56*9880d681SAndroid Build Coastguard Worker  store <32 x i1> %load, <32 x i1> addrspace(1)* %out
57*9880d681SAndroid Build Coastguard Worker  ret void
58*9880d681SAndroid Build Coastguard Worker}
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_load_v64i1:
61*9880d681SAndroid Build Coastguard Workerdefine void @constant_load_v64i1(<64 x i1> addrspace(1)* %out, <64 x i1> addrspace(2)* nocapture %in) #0 {
62*9880d681SAndroid Build Coastguard Worker  %load = load <64 x i1>, <64 x i1> addrspace(2)* %in
63*9880d681SAndroid Build Coastguard Worker  store <64 x i1> %load, <64 x i1> addrspace(1)* %out
64*9880d681SAndroid Build Coastguard Worker  ret void
65*9880d681SAndroid Build Coastguard Worker}
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i1_to_i32:
68*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ubyte
69*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_dword
70*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i1_to_i32(i32 addrspace(1)* %out, i1 addrspace(2)* nocapture %in) #0 {
71*9880d681SAndroid Build Coastguard Worker  %a = load i1, i1 addrspace(2)* %in
72*9880d681SAndroid Build Coastguard Worker  %ext = zext i1 %a to i32
73*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %out
74*9880d681SAndroid Build Coastguard Worker  ret void
75*9880d681SAndroid Build Coastguard Worker}
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i1_to_i32:
78*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ubyte
79*9880d681SAndroid Build Coastguard Worker; GCN: v_bfe_i32 {{v[0-9]+}}, {{v[0-9]+}}, 0, 1{{$}}
80*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_dword
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker; EG: VTX_READ_8
83*9880d681SAndroid Build Coastguard Worker; EG: BFE_INT
84*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i1_to_i32(i32 addrspace(1)* %out, i1 addrspace(2)* nocapture %in) #0 {
85*9880d681SAndroid Build Coastguard Worker  %a = load i1, i1 addrspace(2)* %in
86*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %a to i32
87*9880d681SAndroid Build Coastguard Worker  store i32 %ext, i32 addrspace(1)* %out
88*9880d681SAndroid Build Coastguard Worker  ret void
89*9880d681SAndroid Build Coastguard Worker}
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i1_to_v1i32:
92*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i1_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i1> addrspace(2)* nocapture %in) #0 {
93*9880d681SAndroid Build Coastguard Worker  %load = load <1 x i1>, <1 x i1> addrspace(2)* %in
94*9880d681SAndroid Build Coastguard Worker  %ext = zext <1 x i1> %load to <1 x i32>
95*9880d681SAndroid Build Coastguard Worker  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
96*9880d681SAndroid Build Coastguard Worker  ret void
97*9880d681SAndroid Build Coastguard Worker}
98*9880d681SAndroid Build Coastguard Worker
99*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i1_to_v1i32:
100*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i1_to_v1i32(<1 x i32> addrspace(1)* %out, <1 x i1> addrspace(2)* nocapture %in) #0 {
101*9880d681SAndroid Build Coastguard Worker  %load = load <1 x i1>, <1 x i1> addrspace(2)* %in
102*9880d681SAndroid Build Coastguard Worker  %ext = sext <1 x i1> %load to <1 x i32>
103*9880d681SAndroid Build Coastguard Worker  store <1 x i32> %ext, <1 x i32> addrspace(1)* %out
104*9880d681SAndroid Build Coastguard Worker  ret void
105*9880d681SAndroid Build Coastguard Worker}
106*9880d681SAndroid Build Coastguard Worker
107*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i1_to_v2i32:
108*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i1_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i1> addrspace(2)* nocapture %in) #0 {
109*9880d681SAndroid Build Coastguard Worker  %load = load <2 x i1>, <2 x i1> addrspace(2)* %in
110*9880d681SAndroid Build Coastguard Worker  %ext = zext <2 x i1> %load to <2 x i32>
111*9880d681SAndroid Build Coastguard Worker  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
112*9880d681SAndroid Build Coastguard Worker  ret void
113*9880d681SAndroid Build Coastguard Worker}
114*9880d681SAndroid Build Coastguard Worker
115*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v2i1_to_v2i32:
116*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i1_to_v2i32(<2 x i32> addrspace(1)* %out, <2 x i1> addrspace(2)* nocapture %in) #0 {
117*9880d681SAndroid Build Coastguard Worker  %load = load <2 x i1>, <2 x i1> addrspace(2)* %in
118*9880d681SAndroid Build Coastguard Worker  %ext = sext <2 x i1> %load to <2 x i32>
119*9880d681SAndroid Build Coastguard Worker  store <2 x i32> %ext, <2 x i32> addrspace(1)* %out
120*9880d681SAndroid Build Coastguard Worker  ret void
121*9880d681SAndroid Build Coastguard Worker}
122*9880d681SAndroid Build Coastguard Worker
123*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v3i1_to_v3i32:
124*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v3i1_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i1> addrspace(2)* nocapture %in) #0 {
125*9880d681SAndroid Build Coastguard Worker  %load = load <3 x i1>, <3 x i1> addrspace(2)* %in
126*9880d681SAndroid Build Coastguard Worker  %ext = zext <3 x i1> %load to <3 x i32>
127*9880d681SAndroid Build Coastguard Worker  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
128*9880d681SAndroid Build Coastguard Worker  ret void
129*9880d681SAndroid Build Coastguard Worker}
130*9880d681SAndroid Build Coastguard Worker
131*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v3i1_to_v3i32:
132*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v3i1_to_v3i32(<3 x i32> addrspace(1)* %out, <3 x i1> addrspace(2)* nocapture %in) #0 {
133*9880d681SAndroid Build Coastguard Worker  %load = load <3 x i1>, <3 x i1> addrspace(2)* %in
134*9880d681SAndroid Build Coastguard Worker  %ext = sext <3 x i1> %load to <3 x i32>
135*9880d681SAndroid Build Coastguard Worker  store <3 x i32> %ext, <3 x i32> addrspace(1)* %out
136*9880d681SAndroid Build Coastguard Worker  ret void
137*9880d681SAndroid Build Coastguard Worker}
138*9880d681SAndroid Build Coastguard Worker
139*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i1_to_v4i32:
140*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i1_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i1> addrspace(2)* nocapture %in) #0 {
141*9880d681SAndroid Build Coastguard Worker  %load = load <4 x i1>, <4 x i1> addrspace(2)* %in
142*9880d681SAndroid Build Coastguard Worker  %ext = zext <4 x i1> %load to <4 x i32>
143*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
144*9880d681SAndroid Build Coastguard Worker  ret void
145*9880d681SAndroid Build Coastguard Worker}
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i1_to_v4i32:
148*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i1_to_v4i32(<4 x i32> addrspace(1)* %out, <4 x i1> addrspace(2)* nocapture %in) #0 {
149*9880d681SAndroid Build Coastguard Worker  %load = load <4 x i1>, <4 x i1> addrspace(2)* %in
150*9880d681SAndroid Build Coastguard Worker  %ext = sext <4 x i1> %load to <4 x i32>
151*9880d681SAndroid Build Coastguard Worker  store <4 x i32> %ext, <4 x i32> addrspace(1)* %out
152*9880d681SAndroid Build Coastguard Worker  ret void
153*9880d681SAndroid Build Coastguard Worker}
154*9880d681SAndroid Build Coastguard Worker
155*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i1_to_v8i32:
156*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i1_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i1> addrspace(2)* nocapture %in) #0 {
157*9880d681SAndroid Build Coastguard Worker  %load = load <8 x i1>, <8 x i1> addrspace(2)* %in
158*9880d681SAndroid Build Coastguard Worker  %ext = zext <8 x i1> %load to <8 x i32>
159*9880d681SAndroid Build Coastguard Worker  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
160*9880d681SAndroid Build Coastguard Worker  ret void
161*9880d681SAndroid Build Coastguard Worker}
162*9880d681SAndroid Build Coastguard Worker
163*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v8i1_to_v8i32:
164*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i1_to_v8i32(<8 x i32> addrspace(1)* %out, <8 x i1> addrspace(2)* nocapture %in) #0 {
165*9880d681SAndroid Build Coastguard Worker  %load = load <8 x i1>, <8 x i1> addrspace(2)* %in
166*9880d681SAndroid Build Coastguard Worker  %ext = sext <8 x i1> %load to <8 x i32>
167*9880d681SAndroid Build Coastguard Worker  store <8 x i32> %ext, <8 x i32> addrspace(1)* %out
168*9880d681SAndroid Build Coastguard Worker  ret void
169*9880d681SAndroid Build Coastguard Worker}
170*9880d681SAndroid Build Coastguard Worker
171*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i1_to_v16i32:
172*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i1_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i1> addrspace(2)* nocapture %in) #0 {
173*9880d681SAndroid Build Coastguard Worker  %load = load <16 x i1>, <16 x i1> addrspace(2)* %in
174*9880d681SAndroid Build Coastguard Worker  %ext = zext <16 x i1> %load to <16 x i32>
175*9880d681SAndroid Build Coastguard Worker  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
176*9880d681SAndroid Build Coastguard Worker  ret void
177*9880d681SAndroid Build Coastguard Worker}
178*9880d681SAndroid Build Coastguard Worker
179*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i1_to_v16i32:
180*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i1_to_v16i32(<16 x i32> addrspace(1)* %out, <16 x i1> addrspace(2)* nocapture %in) #0 {
181*9880d681SAndroid Build Coastguard Worker  %load = load <16 x i1>, <16 x i1> addrspace(2)* %in
182*9880d681SAndroid Build Coastguard Worker  %ext = sext <16 x i1> %load to <16 x i32>
183*9880d681SAndroid Build Coastguard Worker  store <16 x i32> %ext, <16 x i32> addrspace(1)* %out
184*9880d681SAndroid Build Coastguard Worker  ret void
185*9880d681SAndroid Build Coastguard Worker}
186*9880d681SAndroid Build Coastguard Worker
187*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i1_to_v32i32:
188*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i1_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i1> addrspace(2)* nocapture %in) #0 {
189*9880d681SAndroid Build Coastguard Worker  %load = load <32 x i1>, <32 x i1> addrspace(2)* %in
190*9880d681SAndroid Build Coastguard Worker  %ext = zext <32 x i1> %load to <32 x i32>
191*9880d681SAndroid Build Coastguard Worker  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
192*9880d681SAndroid Build Coastguard Worker  ret void
193*9880d681SAndroid Build Coastguard Worker}
194*9880d681SAndroid Build Coastguard Worker
195*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i1_to_v32i32:
196*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i1_to_v32i32(<32 x i32> addrspace(1)* %out, <32 x i1> addrspace(2)* nocapture %in) #0 {
197*9880d681SAndroid Build Coastguard Worker  %load = load <32 x i1>, <32 x i1> addrspace(2)* %in
198*9880d681SAndroid Build Coastguard Worker  %ext = sext <32 x i1> %load to <32 x i32>
199*9880d681SAndroid Build Coastguard Worker  store <32 x i32> %ext, <32 x i32> addrspace(1)* %out
200*9880d681SAndroid Build Coastguard Worker  ret void
201*9880d681SAndroid Build Coastguard Worker}
202*9880d681SAndroid Build Coastguard Worker
203*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v64i1_to_v64i32:
204*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v64i1_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i1> addrspace(2)* nocapture %in) #0 {
205*9880d681SAndroid Build Coastguard Worker  %load = load <64 x i1>, <64 x i1> addrspace(2)* %in
206*9880d681SAndroid Build Coastguard Worker  %ext = zext <64 x i1> %load to <64 x i32>
207*9880d681SAndroid Build Coastguard Worker  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
208*9880d681SAndroid Build Coastguard Worker  ret void
209*9880d681SAndroid Build Coastguard Worker}
210*9880d681SAndroid Build Coastguard Worker
211*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v64i1_to_v64i32:
212*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v64i1_to_v64i32(<64 x i32> addrspace(1)* %out, <64 x i1> addrspace(2)* nocapture %in) #0 {
213*9880d681SAndroid Build Coastguard Worker  %load = load <64 x i1>, <64 x i1> addrspace(2)* %in
214*9880d681SAndroid Build Coastguard Worker  %ext = sext <64 x i1> %load to <64 x i32>
215*9880d681SAndroid Build Coastguard Worker  store <64 x i32> %ext, <64 x i32> addrspace(1)* %out
216*9880d681SAndroid Build Coastguard Worker  ret void
217*9880d681SAndroid Build Coastguard Worker}
218*9880d681SAndroid Build Coastguard Worker
219*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_i1_to_i64:
220*9880d681SAndroid Build Coastguard Worker; GCN-DAG: buffer_load_ubyte [[LOAD:v[0-9]+]],
221*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_mov_b32_e32 {{v[0-9]+}}, 0{{$}}
222*9880d681SAndroid Build Coastguard Worker; GCN-DAG: v_and_b32_e32 {{v[0-9]+}}, 1, [[LOAD]]
223*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_dwordx2
224*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_i1_to_i64(i64 addrspace(1)* %out, i1 addrspace(2)* nocapture %in) #0 {
225*9880d681SAndroid Build Coastguard Worker  %a = load i1, i1 addrspace(2)* %in
226*9880d681SAndroid Build Coastguard Worker  %ext = zext i1 %a to i64
227*9880d681SAndroid Build Coastguard Worker  store i64 %ext, i64 addrspace(1)* %out
228*9880d681SAndroid Build Coastguard Worker  ret void
229*9880d681SAndroid Build Coastguard Worker}
230*9880d681SAndroid Build Coastguard Worker
231*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_i1_to_i64:
232*9880d681SAndroid Build Coastguard Worker; GCN: buffer_load_ubyte [[LOAD:v[0-9]+]],
233*9880d681SAndroid Build Coastguard Worker; GCN: v_bfe_i32 [[BFE:v[0-9]+]], {{v[0-9]+}}, 0, 1{{$}}
234*9880d681SAndroid Build Coastguard Worker; GCN: v_ashrrev_i32_e32 v{{[0-9]+}}, 31, [[BFE]]
235*9880d681SAndroid Build Coastguard Worker; GCN: buffer_store_dwordx2
236*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_i1_to_i64(i64 addrspace(1)* %out, i1 addrspace(2)* nocapture %in) #0 {
237*9880d681SAndroid Build Coastguard Worker  %a = load i1, i1 addrspace(2)* %in
238*9880d681SAndroid Build Coastguard Worker  %ext = sext i1 %a to i64
239*9880d681SAndroid Build Coastguard Worker  store i64 %ext, i64 addrspace(1)* %out
240*9880d681SAndroid Build Coastguard Worker  ret void
241*9880d681SAndroid Build Coastguard Worker}
242*9880d681SAndroid Build Coastguard Worker
243*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v1i1_to_v1i64:
244*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v1i1_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i1> addrspace(2)* nocapture %in) #0 {
245*9880d681SAndroid Build Coastguard Worker  %load = load <1 x i1>, <1 x i1> addrspace(2)* %in
246*9880d681SAndroid Build Coastguard Worker  %ext = zext <1 x i1> %load to <1 x i64>
247*9880d681SAndroid Build Coastguard Worker  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
248*9880d681SAndroid Build Coastguard Worker  ret void
249*9880d681SAndroid Build Coastguard Worker}
250*9880d681SAndroid Build Coastguard Worker
251*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v1i1_to_v1i64:
252*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v1i1_to_v1i64(<1 x i64> addrspace(1)* %out, <1 x i1> addrspace(2)* nocapture %in) #0 {
253*9880d681SAndroid Build Coastguard Worker  %load = load <1 x i1>, <1 x i1> addrspace(2)* %in
254*9880d681SAndroid Build Coastguard Worker  %ext = sext <1 x i1> %load to <1 x i64>
255*9880d681SAndroid Build Coastguard Worker  store <1 x i64> %ext, <1 x i64> addrspace(1)* %out
256*9880d681SAndroid Build Coastguard Worker  ret void
257*9880d681SAndroid Build Coastguard Worker}
258*9880d681SAndroid Build Coastguard Worker
259*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v2i1_to_v2i64:
260*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v2i1_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i1> addrspace(2)* nocapture %in) #0 {
261*9880d681SAndroid Build Coastguard Worker  %load = load <2 x i1>, <2 x i1> addrspace(2)* %in
262*9880d681SAndroid Build Coastguard Worker  %ext = zext <2 x i1> %load to <2 x i64>
263*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
264*9880d681SAndroid Build Coastguard Worker  ret void
265*9880d681SAndroid Build Coastguard Worker}
266*9880d681SAndroid Build Coastguard Worker
267*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v2i1_to_v2i64:
268*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v2i1_to_v2i64(<2 x i64> addrspace(1)* %out, <2 x i1> addrspace(2)* nocapture %in) #0 {
269*9880d681SAndroid Build Coastguard Worker  %load = load <2 x i1>, <2 x i1> addrspace(2)* %in
270*9880d681SAndroid Build Coastguard Worker  %ext = sext <2 x i1> %load to <2 x i64>
271*9880d681SAndroid Build Coastguard Worker  store <2 x i64> %ext, <2 x i64> addrspace(1)* %out
272*9880d681SAndroid Build Coastguard Worker  ret void
273*9880d681SAndroid Build Coastguard Worker}
274*9880d681SAndroid Build Coastguard Worker
275*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v3i1_to_v3i64:
276*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v3i1_to_v3i64(<3 x i64> addrspace(1)* %out, <3 x i1> addrspace(2)* nocapture %in) #0 {
277*9880d681SAndroid Build Coastguard Worker  %load = load <3 x i1>, <3 x i1> addrspace(2)* %in
278*9880d681SAndroid Build Coastguard Worker  %ext = zext <3 x i1> %load to <3 x i64>
279*9880d681SAndroid Build Coastguard Worker  store <3 x i64> %ext, <3 x i64> addrspace(1)* %out
280*9880d681SAndroid Build Coastguard Worker  ret void
281*9880d681SAndroid Build Coastguard Worker}
282*9880d681SAndroid Build Coastguard Worker
283*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v3i1_to_v3i64:
284*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v3i1_to_v3i64(<3 x i64> addrspace(1)* %out, <3 x i1> addrspace(2)* nocapture %in) #0 {
285*9880d681SAndroid Build Coastguard Worker  %load = load <3 x i1>, <3 x i1> addrspace(2)* %in
286*9880d681SAndroid Build Coastguard Worker  %ext = sext <3 x i1> %load to <3 x i64>
287*9880d681SAndroid Build Coastguard Worker  store <3 x i64> %ext, <3 x i64> addrspace(1)* %out
288*9880d681SAndroid Build Coastguard Worker  ret void
289*9880d681SAndroid Build Coastguard Worker}
290*9880d681SAndroid Build Coastguard Worker
291*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v4i1_to_v4i64:
292*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v4i1_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i1> addrspace(2)* nocapture %in) #0 {
293*9880d681SAndroid Build Coastguard Worker  %load = load <4 x i1>, <4 x i1> addrspace(2)* %in
294*9880d681SAndroid Build Coastguard Worker  %ext = zext <4 x i1> %load to <4 x i64>
295*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
296*9880d681SAndroid Build Coastguard Worker  ret void
297*9880d681SAndroid Build Coastguard Worker}
298*9880d681SAndroid Build Coastguard Worker
299*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v4i1_to_v4i64:
300*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v4i1_to_v4i64(<4 x i64> addrspace(1)* %out, <4 x i1> addrspace(2)* nocapture %in) #0 {
301*9880d681SAndroid Build Coastguard Worker  %load = load <4 x i1>, <4 x i1> addrspace(2)* %in
302*9880d681SAndroid Build Coastguard Worker  %ext = sext <4 x i1> %load to <4 x i64>
303*9880d681SAndroid Build Coastguard Worker  store <4 x i64> %ext, <4 x i64> addrspace(1)* %out
304*9880d681SAndroid Build Coastguard Worker  ret void
305*9880d681SAndroid Build Coastguard Worker}
306*9880d681SAndroid Build Coastguard Worker
307*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v8i1_to_v8i64:
308*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v8i1_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i1> addrspace(2)* nocapture %in) #0 {
309*9880d681SAndroid Build Coastguard Worker  %load = load <8 x i1>, <8 x i1> addrspace(2)* %in
310*9880d681SAndroid Build Coastguard Worker  %ext = zext <8 x i1> %load to <8 x i64>
311*9880d681SAndroid Build Coastguard Worker  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
312*9880d681SAndroid Build Coastguard Worker  ret void
313*9880d681SAndroid Build Coastguard Worker}
314*9880d681SAndroid Build Coastguard Worker
315*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v8i1_to_v8i64:
316*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v8i1_to_v8i64(<8 x i64> addrspace(1)* %out, <8 x i1> addrspace(2)* nocapture %in) #0 {
317*9880d681SAndroid Build Coastguard Worker  %load = load <8 x i1>, <8 x i1> addrspace(2)* %in
318*9880d681SAndroid Build Coastguard Worker  %ext = sext <8 x i1> %load to <8 x i64>
319*9880d681SAndroid Build Coastguard Worker  store <8 x i64> %ext, <8 x i64> addrspace(1)* %out
320*9880d681SAndroid Build Coastguard Worker  ret void
321*9880d681SAndroid Build Coastguard Worker}
322*9880d681SAndroid Build Coastguard Worker
323*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v16i1_to_v16i64:
324*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v16i1_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i1> addrspace(2)* nocapture %in) #0 {
325*9880d681SAndroid Build Coastguard Worker  %load = load <16 x i1>, <16 x i1> addrspace(2)* %in
326*9880d681SAndroid Build Coastguard Worker  %ext = zext <16 x i1> %load to <16 x i64>
327*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
328*9880d681SAndroid Build Coastguard Worker  ret void
329*9880d681SAndroid Build Coastguard Worker}
330*9880d681SAndroid Build Coastguard Worker
331*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v16i1_to_v16i64:
332*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v16i1_to_v16i64(<16 x i64> addrspace(1)* %out, <16 x i1> addrspace(2)* nocapture %in) #0 {
333*9880d681SAndroid Build Coastguard Worker  %load = load <16 x i1>, <16 x i1> addrspace(2)* %in
334*9880d681SAndroid Build Coastguard Worker  %ext = sext <16 x i1> %load to <16 x i64>
335*9880d681SAndroid Build Coastguard Worker  store <16 x i64> %ext, <16 x i64> addrspace(1)* %out
336*9880d681SAndroid Build Coastguard Worker  ret void
337*9880d681SAndroid Build Coastguard Worker}
338*9880d681SAndroid Build Coastguard Worker
339*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v32i1_to_v32i64:
340*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v32i1_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i1> addrspace(2)* nocapture %in) #0 {
341*9880d681SAndroid Build Coastguard Worker  %load = load <32 x i1>, <32 x i1> addrspace(2)* %in
342*9880d681SAndroid Build Coastguard Worker  %ext = zext <32 x i1> %load to <32 x i64>
343*9880d681SAndroid Build Coastguard Worker  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
344*9880d681SAndroid Build Coastguard Worker  ret void
345*9880d681SAndroid Build Coastguard Worker}
346*9880d681SAndroid Build Coastguard Worker
347*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v32i1_to_v32i64:
348*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v32i1_to_v32i64(<32 x i64> addrspace(1)* %out, <32 x i1> addrspace(2)* nocapture %in) #0 {
349*9880d681SAndroid Build Coastguard Worker  %load = load <32 x i1>, <32 x i1> addrspace(2)* %in
350*9880d681SAndroid Build Coastguard Worker  %ext = sext <32 x i1> %load to <32 x i64>
351*9880d681SAndroid Build Coastguard Worker  store <32 x i64> %ext, <32 x i64> addrspace(1)* %out
352*9880d681SAndroid Build Coastguard Worker  ret void
353*9880d681SAndroid Build Coastguard Worker}
354*9880d681SAndroid Build Coastguard Worker
355*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_zextload_v64i1_to_v64i64:
356*9880d681SAndroid Build Coastguard Workerdefine void @constant_zextload_v64i1_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i1> addrspace(2)* nocapture %in) #0 {
357*9880d681SAndroid Build Coastguard Worker  %load = load <64 x i1>, <64 x i1> addrspace(2)* %in
358*9880d681SAndroid Build Coastguard Worker  %ext = zext <64 x i1> %load to <64 x i64>
359*9880d681SAndroid Build Coastguard Worker  store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
360*9880d681SAndroid Build Coastguard Worker  ret void
361*9880d681SAndroid Build Coastguard Worker}
362*9880d681SAndroid Build Coastguard Worker
363*9880d681SAndroid Build Coastguard Worker; FUNC-LABEL: {{^}}constant_sextload_v64i1_to_v64i64:
364*9880d681SAndroid Build Coastguard Workerdefine void @constant_sextload_v64i1_to_v64i64(<64 x i64> addrspace(1)* %out, <64 x i1> addrspace(2)* nocapture %in) #0 {
365*9880d681SAndroid Build Coastguard Worker  %load = load <64 x i1>, <64 x i1> addrspace(2)* %in
366*9880d681SAndroid Build Coastguard Worker  %ext = sext <64 x i1> %load to <64 x i64>
367*9880d681SAndroid Build Coastguard Worker  store <64 x i64> %ext, <64 x i64> addrspace(1)* %out
368*9880d681SAndroid Build Coastguard Worker  ret void
369*9880d681SAndroid Build Coastguard Worker}
370*9880d681SAndroid Build Coastguard Worker
371*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind }
372