R600/SI: Define a schedule model and enable the generic machine scheduler
[oota-llvm.git] / test / CodeGen / R600 / llvm.SI.image.sample.ll
1 ;RUN: llc < %s -march=amdgcn -mcpu=verde -verify-machineinstrs | FileCheck %s
2 ;RUN: llc < %s -march=amdgcn -mcpu=tonga -verify-machineinstrs | FileCheck %s
3
4 ;CHECK-LABEL: {{^}}sample:
5 ;CHECK: image_sample {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
6 define void @sample() #0 {
7 main_body:
8   %r = call <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
9   %r0 = extractelement <4 x float> %r, i32 0
10   %r1 = extractelement <4 x float> %r, i32 1
11   %r2 = extractelement <4 x float> %r, i32 2
12   %r3 = extractelement <4 x float> %r, i32 3
13   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
14   ret void
15 }
16
17 ;CHECK-LABEL: {{^}}sample_cl:
18 ;CHECK: image_sample_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
19 define void @sample_cl() #0 {
20 main_body:
21   %r = call <4 x float> @llvm.SI.image.sample.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
22   %r0 = extractelement <4 x float> %r, i32 0
23   %r1 = extractelement <4 x float> %r, i32 1
24   %r2 = extractelement <4 x float> %r, i32 2
25   %r3 = extractelement <4 x float> %r, i32 3
26   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
27   ret void
28 }
29
30 ;CHECK-LABEL: {{^}}sample_d:
31 ;CHECK: image_sample_d {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
32 define void @sample_d() #0 {
33 main_body:
34   %r = call <4 x float> @llvm.SI.image.sample.d.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
35   %r0 = extractelement <4 x float> %r, i32 0
36   %r1 = extractelement <4 x float> %r, i32 1
37   %r2 = extractelement <4 x float> %r, i32 2
38   %r3 = extractelement <4 x float> %r, i32 3
39   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
40   ret void
41 }
42
43 ;CHECK-LABEL: {{^}}sample_d_cl:
44 ;CHECK: image_sample_d_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
45 define void @sample_d_cl() #0 {
46 main_body:
47   %r = call <4 x float> @llvm.SI.image.sample.d.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
48   %r0 = extractelement <4 x float> %r, i32 0
49   %r1 = extractelement <4 x float> %r, i32 1
50   %r2 = extractelement <4 x float> %r, i32 2
51   %r3 = extractelement <4 x float> %r, i32 3
52   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
53   ret void
54 }
55
56 ;CHECK-LABEL: {{^}}sample_l:
57 ;CHECK: image_sample_l {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
58 define void @sample_l() #0 {
59 main_body:
60   %r = call <4 x float> @llvm.SI.image.sample.l.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
61   %r0 = extractelement <4 x float> %r, i32 0
62   %r1 = extractelement <4 x float> %r, i32 1
63   %r2 = extractelement <4 x float> %r, i32 2
64   %r3 = extractelement <4 x float> %r, i32 3
65   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
66   ret void
67 }
68
69 ;CHECK-LABEL: {{^}}sample_b:
70 ;CHECK: image_sample_b {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
71 define void @sample_b() #0 {
72 main_body:
73   %r = call <4 x float> @llvm.SI.image.sample.b.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
74   %r0 = extractelement <4 x float> %r, i32 0
75   %r1 = extractelement <4 x float> %r, i32 1
76   %r2 = extractelement <4 x float> %r, i32 2
77   %r3 = extractelement <4 x float> %r, i32 3
78   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
79   ret void
80 }
81
82 ;CHECK-LABEL: {{^}}sample_b_cl:
83 ;CHECK: image_sample_b_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
84 define void @sample_b_cl() #0 {
85 main_body:
86   %r = call <4 x float> @llvm.SI.image.sample.b.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
87   %r0 = extractelement <4 x float> %r, i32 0
88   %r1 = extractelement <4 x float> %r, i32 1
89   %r2 = extractelement <4 x float> %r, i32 2
90   %r3 = extractelement <4 x float> %r, i32 3
91   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
92   ret void
93 }
94
95 ;CHECK-LABEL: {{^}}sample_lz:
96 ;CHECK: image_sample_lz {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
97 define void @sample_lz() #0 {
98 main_body:
99   %r = call <4 x float> @llvm.SI.image.sample.lz.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
100   %r0 = extractelement <4 x float> %r, i32 0
101   %r1 = extractelement <4 x float> %r, i32 1
102   %r2 = extractelement <4 x float> %r, i32 2
103   %r3 = extractelement <4 x float> %r, i32 3
104   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
105   ret void
106 }
107
108 ;CHECK-LABEL: {{^}}sample_cd:
109 ;CHECK: image_sample_cd {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
110 define void @sample_cd() #0 {
111 main_body:
112   %r = call <4 x float> @llvm.SI.image.sample.cd.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
113   %r0 = extractelement <4 x float> %r, i32 0
114   %r1 = extractelement <4 x float> %r, i32 1
115   %r2 = extractelement <4 x float> %r, i32 2
116   %r3 = extractelement <4 x float> %r, i32 3
117   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
118   ret void
119 }
120
121 ;CHECK-LABEL: {{^}}sample_cd_cl:
122 ;CHECK: image_sample_cd_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
123 define void @sample_cd_cl() #0 {
124 main_body:
125   %r = call <4 x float> @llvm.SI.image.sample.cd.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
126   %r0 = extractelement <4 x float> %r, i32 0
127   %r1 = extractelement <4 x float> %r, i32 1
128   %r2 = extractelement <4 x float> %r, i32 2
129   %r3 = extractelement <4 x float> %r, i32 3
130   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
131   ret void
132 }
133
134 ;CHECK-LABEL: {{^}}sample_c:
135 ;CHECK: image_sample_c {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
136 define void @sample_c() #0 {
137 main_body:
138   %r = call <4 x float> @llvm.SI.image.sample.c.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
139   %r0 = extractelement <4 x float> %r, i32 0
140   %r1 = extractelement <4 x float> %r, i32 1
141   %r2 = extractelement <4 x float> %r, i32 2
142   %r3 = extractelement <4 x float> %r, i32 3
143   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
144   ret void
145 }
146
147 ;CHECK-LABEL: {{^}}sample_c_cl:
148 ;CHECK: image_sample_c_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
149 define void @sample_c_cl() #0 {
150 main_body:
151   %r = call <4 x float> @llvm.SI.image.sample.c.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
152   %r0 = extractelement <4 x float> %r, i32 0
153   %r1 = extractelement <4 x float> %r, i32 1
154   %r2 = extractelement <4 x float> %r, i32 2
155   %r3 = extractelement <4 x float> %r, i32 3
156   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
157   ret void
158 }
159
160 ;CHECK-LABEL: {{^}}sample_c_d:
161 ;CHECK: image_sample_c_d {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
162 define void @sample_c_d() #0 {
163 main_body:
164   %r = call <4 x float> @llvm.SI.image.sample.c.d.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
165   %r0 = extractelement <4 x float> %r, i32 0
166   %r1 = extractelement <4 x float> %r, i32 1
167   %r2 = extractelement <4 x float> %r, i32 2
168   %r3 = extractelement <4 x float> %r, i32 3
169   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
170   ret void
171 }
172
173 ;CHECK-LABEL: {{^}}sample_c_d_cl:
174 ;CHECK: image_sample_c_d_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
175 define void @sample_c_d_cl() #0 {
176 main_body:
177   %r = call <4 x float> @llvm.SI.image.sample.c.d.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
178   %r0 = extractelement <4 x float> %r, i32 0
179   %r1 = extractelement <4 x float> %r, i32 1
180   %r2 = extractelement <4 x float> %r, i32 2
181   %r3 = extractelement <4 x float> %r, i32 3
182   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
183   ret void
184 }
185
186 ;CHECK-LABEL: {{^}}sample_c_l:
187 ;CHECK: image_sample_c_l {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
188 define void @sample_c_l() #0 {
189 main_body:
190   %r = call <4 x float> @llvm.SI.image.sample.c.l.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
191   %r0 = extractelement <4 x float> %r, i32 0
192   %r1 = extractelement <4 x float> %r, i32 1
193   %r2 = extractelement <4 x float> %r, i32 2
194   %r3 = extractelement <4 x float> %r, i32 3
195   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
196   ret void
197 }
198
199 ;CHECK-LABEL: {{^}}sample_c_b:
200 ;CHECK: image_sample_c_b {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
201 define void @sample_c_b() #0 {
202 main_body:
203   %r = call <4 x float> @llvm.SI.image.sample.c.b.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
204   %r0 = extractelement <4 x float> %r, i32 0
205   %r1 = extractelement <4 x float> %r, i32 1
206   %r2 = extractelement <4 x float> %r, i32 2
207   %r3 = extractelement <4 x float> %r, i32 3
208   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
209   ret void
210 }
211
212 ;CHECK-LABEL: {{^}}sample_c_b_cl:
213 ;CHECK: image_sample_c_b_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
214 define void @sample_c_b_cl() #0 {
215 main_body:
216   %r = call <4 x float> @llvm.SI.image.sample.c.b.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
217   %r0 = extractelement <4 x float> %r, i32 0
218   %r1 = extractelement <4 x float> %r, i32 1
219   %r2 = extractelement <4 x float> %r, i32 2
220   %r3 = extractelement <4 x float> %r, i32 3
221   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
222   ret void
223 }
224
225 ;CHECK-LABEL: {{^}}sample_c_lz:
226 ;CHECK: image_sample_c_lz {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
227 define void @sample_c_lz() #0 {
228 main_body:
229   %r = call <4 x float> @llvm.SI.image.sample.c.lz.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
230   %r0 = extractelement <4 x float> %r, i32 0
231   %r1 = extractelement <4 x float> %r, i32 1
232   %r2 = extractelement <4 x float> %r, i32 2
233   %r3 = extractelement <4 x float> %r, i32 3
234   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
235   ret void
236 }
237
238 ;CHECK-LABEL: {{^}}sample_c_cd:
239 ;CHECK: image_sample_c_cd {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
240 define void @sample_c_cd() #0 {
241 main_body:
242   %r = call <4 x float> @llvm.SI.image.sample.c.cd.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
243   %r0 = extractelement <4 x float> %r, i32 0
244   %r1 = extractelement <4 x float> %r, i32 1
245   %r2 = extractelement <4 x float> %r, i32 2
246   %r3 = extractelement <4 x float> %r, i32 3
247   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
248   ret void
249 }
250
251 ;CHECK-LABEL: {{^}}sample_c_cd_cl:
252 ;CHECK: image_sample_c_cd_cl {{v\[[0-9]+:[0-9]+\]}}, 15, 0, 0, 0, 0, 0, 0, 0, {{v\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}, {{s\[[0-9]+:[0-9]+\]}}
253 define void @sample_c_cd_cl() #0 {
254 main_body:
255   %r = call <4 x float> @llvm.SI.image.sample.c.cd.cl.v4i32(<4 x i32> undef, <8 x i32> undef, <4 x i32> undef, i32 15, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0)
256   %r0 = extractelement <4 x float> %r, i32 0
257   %r1 = extractelement <4 x float> %r, i32 1
258   %r2 = extractelement <4 x float> %r, i32 2
259   %r3 = extractelement <4 x float> %r, i32 3
260   call void @llvm.SI.export(i32 15, i32 1, i32 1, i32 0, i32 1, float %r0, float %r1, float %r2, float %r3)
261   ret void
262 }
263
264
265 declare <4 x float> @llvm.SI.image.sample.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
266 declare <4 x float> @llvm.SI.image.sample.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
267 declare <4 x float> @llvm.SI.image.sample.d.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
268 declare <4 x float> @llvm.SI.image.sample.d.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
269 declare <4 x float> @llvm.SI.image.sample.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
270 declare <4 x float> @llvm.SI.image.sample.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
271 declare <4 x float> @llvm.SI.image.sample.b.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
272 declare <4 x float> @llvm.SI.image.sample.lz.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
273 declare <4 x float> @llvm.SI.image.sample.cd.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
274 declare <4 x float> @llvm.SI.image.sample.cd.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
275
276 declare <4 x float> @llvm.SI.image.sample.c.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
277 declare <4 x float> @llvm.SI.image.sample.c.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
278 declare <4 x float> @llvm.SI.image.sample.c.d.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
279 declare <4 x float> @llvm.SI.image.sample.c.d.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
280 declare <4 x float> @llvm.SI.image.sample.c.l.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
281 declare <4 x float> @llvm.SI.image.sample.c.b.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
282 declare <4 x float> @llvm.SI.image.sample.c.b.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
283 declare <4 x float> @llvm.SI.image.sample.c.lz.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
284 declare <4 x float> @llvm.SI.image.sample.c.cd.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
285 declare <4 x float> @llvm.SI.image.sample.c.cd.cl.v4i32(<4 x i32>, <8 x i32>, <4 x i32>, i32, i32, i32, i32, i32, i32, i32, i32) #1
286
287 declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
288
289 attributes #0 = { "ShaderType"="0" }
290 attributes #1 = { nounwind readnone }