1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -stop-after=legalizer -o - %s | FileCheck -check-prefix=GFX9 %s
3; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -stop-after=legalizer -o - %s | FileCheck -check-prefix=GFX10 %s
4
5define amdgpu_ps <4 x float> @sample_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s) {
6  ; GFX9-LABEL: name: sample_1d
7  ; GFX9: bb.1.main_body:
8  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0
9  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
10  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
11  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
12  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
13  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
14  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
15  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
16  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
17  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
18  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
19  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
20  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
21  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
22  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
23  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
24  ; GFX9:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)
25  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.1d), 15, [[TRUNC]](s16), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
26  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
27  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
28  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
29  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
30  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
31  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
32  ; GFX10-LABEL: name: sample_1d
33  ; GFX10: bb.1.main_body:
34  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0
35  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
36  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
37  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
38  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
39  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
40  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
41  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
42  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
43  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
44  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
45  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
46  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
47  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
48  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
49  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
50  ; GFX10:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)
51  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.1d), 15, [[TRUNC]](s16), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
52  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
53  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
54  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
55  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
56  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
57  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
58main_body:
59  %v = call <4 x float> @llvm.amdgcn.image.sample.1d.v4f32.f16(i32 15, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
60  ret <4 x float> %v
61}
62
63define amdgpu_ps <4 x float> @sample_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t) {
64  ; GFX9-LABEL: name: sample_2d
65  ; GFX9: bb.1.main_body:
66  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
67  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
68  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
69  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
70  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
71  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
72  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
73  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
74  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
75  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
76  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
77  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
78  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
79  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
80  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
81  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
82  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
83  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
84  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
85  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
86  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
87  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
88  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
89  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
90  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
91  ; GFX10-LABEL: name: sample_2d
92  ; GFX10: bb.1.main_body:
93  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
94  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
95  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
96  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
97  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
98  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
99  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
100  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
101  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
102  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
103  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
104  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
105  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
106  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
107  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
108  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
109  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
110  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
111  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
112  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
113  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
114  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
115  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
116  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
117  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
118main_body:
119  %v = call <4 x float> @llvm.amdgcn.image.sample.2d.v4f32.f16(i32 15, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
120  ret <4 x float> %v
121}
122
123define amdgpu_ps <4 x float> @sample_3d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %r) {
124  ; GFX9-LABEL: name: sample_3d
125  ; GFX9: bb.1.main_body:
126  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
127  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
128  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
129  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
130  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
131  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
132  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
133  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
134  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
135  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
136  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
137  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
138  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
139  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
140  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
141  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
142  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
143  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
144  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
145  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
146  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
147  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
148  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.3d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
149  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
150  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
151  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
152  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
153  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
154  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
155  ; GFX10-LABEL: name: sample_3d
156  ; GFX10: bb.1.main_body:
157  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
158  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
159  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
160  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
161  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
162  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
163  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
164  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
165  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
166  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
167  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
168  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
169  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
170  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
171  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
172  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
173  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
174  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
175  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
176  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
177  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
178  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
179  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.3d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
180  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
181  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
182  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
183  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
184  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
185  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
186main_body:
187  %v = call <4 x float> @llvm.amdgcn.image.sample.3d.v4f32.f16(i32 15, half %s, half %t, half %r, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
188  ret <4 x float> %v
189}
190
191define amdgpu_ps <4 x float> @sample_cube(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %face) {
192  ; GFX9-LABEL: name: sample_cube
193  ; GFX9: bb.1.main_body:
194  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
195  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
196  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
197  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
198  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
199  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
200  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
201  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
202  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
203  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
204  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
205  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
206  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
207  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
208  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
209  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
210  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
211  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
212  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
213  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
214  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
215  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
216  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cube), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
217  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
218  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
219  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
220  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
221  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
222  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
223  ; GFX10-LABEL: name: sample_cube
224  ; GFX10: bb.1.main_body:
225  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
226  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
227  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
228  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
229  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
230  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
231  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
232  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
233  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
234  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
235  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
236  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
237  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
238  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
239  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
240  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
241  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
242  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
243  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
244  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
245  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
246  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
247  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cube), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
248  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
249  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
250  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
251  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
252  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
253  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
254main_body:
255  %v = call <4 x float> @llvm.amdgcn.image.sample.cube.v4f32.f16(i32 15, half %s, half %t, half %face, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
256  ret <4 x float> %v
257}
258
259define amdgpu_ps <4 x float> @sample_1darray(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %slice) {
260  ; GFX9-LABEL: name: sample_1darray
261  ; GFX9: bb.1.main_body:
262  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
263  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
264  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
265  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
266  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
267  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
268  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
269  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
270  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
271  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
272  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
273  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
274  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
275  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
276  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
277  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
278  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
279  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
280  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.1darray), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
281  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
282  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
283  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
284  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
285  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
286  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
287  ; GFX10-LABEL: name: sample_1darray
288  ; GFX10: bb.1.main_body:
289  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
290  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
291  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
292  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
293  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
294  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
295  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
296  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
297  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
298  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
299  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
300  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
301  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
302  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
303  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
304  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
305  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
306  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
307  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.1darray), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
308  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
309  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
310  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
311  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
312  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
313  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
314main_body:
315  %v = call <4 x float> @llvm.amdgcn.image.sample.1darray.v4f32.f16(i32 15, half %s, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
316  ret <4 x float> %v
317}
318
319define amdgpu_ps <4 x float> @sample_2darray(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %slice) {
320  ; GFX9-LABEL: name: sample_2darray
321  ; GFX9: bb.1.main_body:
322  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
323  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
324  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
325  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
326  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
327  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
328  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
329  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
330  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
331  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
332  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
333  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
334  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
335  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
336  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
337  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
338  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
339  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
340  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
341  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
342  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
343  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
344  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.2darray), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
345  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
346  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
347  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
348  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
349  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
350  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
351  ; GFX10-LABEL: name: sample_2darray
352  ; GFX10: bb.1.main_body:
353  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
354  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
355  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
356  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
357  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
358  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
359  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
360  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
361  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
362  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
363  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
364  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
365  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
366  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
367  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
368  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
369  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
370  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
371  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
372  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
373  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
374  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
375  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.2darray), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
376  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
377  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
378  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
379  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
380  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
381  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
382main_body:
383  %v = call <4 x float> @llvm.amdgcn.image.sample.2darray.v4f32.f16(i32 15, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
384  ret <4 x float> %v
385}
386
387define amdgpu_ps <4 x float> @sample_c_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s) {
388  ; GFX9-LABEL: name: sample_c_1d
389  ; GFX9: bb.1.main_body:
390  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
391  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
392  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
393  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
394  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
395  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
396  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
397  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
398  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
399  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
400  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
401  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
402  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
403  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
404  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
405  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
406  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
407  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
408  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
409  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
410  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
411  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
412  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
413  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
414  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
415  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
416  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
417  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
418  ; GFX10-LABEL: name: sample_c_1d
419  ; GFX10: bb.1.main_body:
420  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
421  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
422  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
423  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
424  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
425  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
426  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
427  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
428  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
429  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
430  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
431  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
432  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
433  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
434  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
435  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
436  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
437  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
438  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
439  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
440  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
441  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
442  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
443  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
444  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
445  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
446  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
447  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
448main_body:
449  %v = call <4 x float> @llvm.amdgcn.image.sample.c.1d.v4f32.f16(i32 15, float %zcompare, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
450  ret <4 x float> %v
451}
452
453define amdgpu_ps <4 x float> @sample_c_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t) {
454  ; GFX9-LABEL: name: sample_c_2d
455  ; GFX9: bb.1.main_body:
456  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
457  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
458  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
459  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
460  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
461  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
462  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
463  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
464  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
465  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
466  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
467  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
468  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
469  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
470  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
471  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
472  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
473  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
474  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
475  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
476  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
477  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
478  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
479  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
480  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
481  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
482  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
483  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
484  ; GFX10-LABEL: name: sample_c_2d
485  ; GFX10: bb.1.main_body:
486  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
487  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
488  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
489  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
490  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
491  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
492  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
493  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
494  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
495  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
496  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
497  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
498  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
499  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
500  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
501  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
502  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
503  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
504  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
505  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
506  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
507  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
508  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
509  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
510  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
511  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
512  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
513  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
514main_body:
515  %v = call <4 x float> @llvm.amdgcn.image.sample.c.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
516  ret <4 x float> %v
517}
518
519define amdgpu_ps <4 x float> @sample_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %clamp) {
520  ; GFX9-LABEL: name: sample_cl_1d
521  ; GFX9: bb.1.main_body:
522  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
523  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
524  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
525  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
526  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
527  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
528  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
529  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
530  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
531  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
532  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
533  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
534  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
535  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
536  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
537  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
538  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
539  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
540  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cl.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
541  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
542  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
543  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
544  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
545  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
546  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
547  ; GFX10-LABEL: name: sample_cl_1d
548  ; GFX10: bb.1.main_body:
549  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
550  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
551  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
552  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
553  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
554  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
555  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
556  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
557  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
558  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
559  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
560  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
561  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
562  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
563  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
564  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
565  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
566  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
567  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cl.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
568  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
569  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
570  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
571  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
572  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
573  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
574main_body:
575  %v = call <4 x float> @llvm.amdgcn.image.sample.cl.1d.v4f32.f16(i32 15, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
576  ret <4 x float> %v
577}
578
579define amdgpu_ps <4 x float> @sample_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %clamp) {
580  ; GFX9-LABEL: name: sample_cl_2d
581  ; GFX9: bb.1.main_body:
582  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
583  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
584  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
585  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
586  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
587  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
588  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
589  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
590  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
591  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
592  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
593  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
594  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
595  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
596  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
597  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
598  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
599  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
600  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
601  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
602  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
603  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
604  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cl.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
605  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
606  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
607  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
608  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
609  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
610  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
611  ; GFX10-LABEL: name: sample_cl_2d
612  ; GFX10: bb.1.main_body:
613  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
614  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
615  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
616  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
617  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
618  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
619  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
620  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
621  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
622  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
623  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
624  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
625  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
626  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
627  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
628  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
629  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
630  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
631  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
632  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
633  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
634  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
635  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cl.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
636  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
637  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
638  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
639  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
640  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
641  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
642main_body:
643  %v = call <4 x float> @llvm.amdgcn.image.sample.cl.2d.v4f32.f16(i32 15, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
644  ret <4 x float> %v
645}
646
647define amdgpu_ps <4 x float> @sample_c_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %clamp) {
648  ; GFX9-LABEL: name: sample_c_cl_1d
649  ; GFX9: bb.1.main_body:
650  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
651  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
652  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
653  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
654  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
655  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
656  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
657  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
658  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
659  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
660  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
661  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
662  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
663  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
664  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
665  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
666  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
667  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
668  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
669  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
670  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
671  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cl.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
672  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
673  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
674  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
675  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
676  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
677  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
678  ; GFX10-LABEL: name: sample_c_cl_1d
679  ; GFX10: bb.1.main_body:
680  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
681  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
682  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
683  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
684  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
685  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
686  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
687  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
688  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
689  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
690  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
691  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
692  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
693  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
694  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
695  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
696  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
697  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
698  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
699  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
700  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
701  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cl.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
702  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
703  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
704  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
705  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
706  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
707  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
708main_body:
709  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cl.1d.v4f32.f16(i32 15, float %zcompare, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
710  ret <4 x float> %v
711}
712
713define amdgpu_ps <4 x float> @sample_c_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t, half %clamp) {
714  ; GFX9-LABEL: name: sample_c_cl_2d
715  ; GFX9: bb.1.main_body:
716  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
717  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
718  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
719  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
720  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
721  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
722  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
723  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
724  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
725  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
726  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
727  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
728  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
729  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
730  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
731  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
732  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
733  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
734  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
735  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
736  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
737  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
738  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
739  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
740  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cl.2d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
741  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
742  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
743  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
744  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
745  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
746  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
747  ; GFX10-LABEL: name: sample_c_cl_2d
748  ; GFX10: bb.1.main_body:
749  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
750  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
751  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
752  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
753  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
754  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
755  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
756  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
757  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
758  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
759  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
760  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
761  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
762  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
763  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
764  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
765  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
766  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
767  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
768  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
769  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
770  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
771  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
772  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cl.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
773  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
774  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
775  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
776  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
777  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
778  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
779main_body:
780  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cl.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
781  ret <4 x float> %v
782}
783
784define amdgpu_ps <4 x float> @sample_b_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, half %s) {
785  ; GFX9-LABEL: name: sample_b_1d
786  ; GFX9: bb.1.main_body:
787  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
788  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
789  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
790  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
791  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
792  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
793  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
794  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
795  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
796  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
797  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
798  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
799  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
800  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
801  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
802  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
803  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
804  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
805  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
806  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
807  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
808  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
809  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
810  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
811  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
812  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
813  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
814  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
815  ; GFX10-LABEL: name: sample_b_1d
816  ; GFX10: bb.1.main_body:
817  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
818  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
819  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
820  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
821  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
822  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
823  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
824  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
825  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
826  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
827  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
828  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
829  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
830  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
831  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
832  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
833  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
834  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
835  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
836  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
837  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
838  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
839  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
840  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
841  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
842  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
843  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
844  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
845main_body:
846  %v = call <4 x float> @llvm.amdgcn.image.sample.b.1d.v4f32.f32.f16(i32 15, float %bias, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
847  ret <4 x float> %v
848}
849
850define amdgpu_ps <4 x float> @sample_b_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, half %s, half %t) {
851  ; GFX9-LABEL: name: sample_b_2d
852  ; GFX9: bb.1.main_body:
853  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
854  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
855  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
856  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
857  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
858  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
859  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
860  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
861  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
862  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
863  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
864  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
865  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
866  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
867  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
868  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
869  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
870  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
871  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
872  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
873  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
874  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
875  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
876  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
877  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
878  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
879  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
880  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
881  ; GFX10-LABEL: name: sample_b_2d
882  ; GFX10: bb.1.main_body:
883  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
884  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
885  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
886  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
887  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
888  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
889  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
890  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
891  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
892  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
893  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
894  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
895  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
896  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
897  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
898  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
899  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
900  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
901  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
902  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
903  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
904  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
905  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
906  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
907  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
908  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
909  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
910  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
911main_body:
912  %v = call <4 x float> @llvm.amdgcn.image.sample.b.2d.v4f32.f32.f16(i32 15, float %bias, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
913  ret <4 x float> %v
914}
915
916define amdgpu_ps <4 x float> @sample_c_b_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, float %zcompare, half %s) {
917  ; GFX9-LABEL: name: sample_c_b_1d
918  ; GFX9: bb.1.main_body:
919  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
920  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
921  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
922  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
923  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
924  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
925  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
926  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
927  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
928  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
929  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
930  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
931  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
932  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
933  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
934  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
935  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
936  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
937  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
938  ; GFX9:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
939  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
940  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
941  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
942  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.1d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
943  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
944  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
945  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
946  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
947  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
948  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
949  ; GFX10-LABEL: name: sample_c_b_1d
950  ; GFX10: bb.1.main_body:
951  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
952  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
953  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
954  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
955  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
956  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
957  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
958  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
959  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
960  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
961  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
962  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
963  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
964  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
965  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
966  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
967  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
968  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
969  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
970  ; GFX10:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
971  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
972  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
973  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.1d), 15, [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
974  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
975  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
976  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
977  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
978  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
979  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
980main_body:
981  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.1d.v4f32.f32.f16(i32 15, float %bias, float %zcompare, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
982  ret <4 x float> %v
983}
984
985define amdgpu_ps <4 x float> @sample_c_b_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, float %zcompare, half %s, half %t) {
986  ; GFX9-LABEL: name: sample_c_b_2d
987  ; GFX9: bb.1.main_body:
988  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
989  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
990  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
991  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
992  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
993  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
994  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
995  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
996  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
997  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
998  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
999  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1000  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1001  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1002  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1003  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1004  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1005  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1006  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1007  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1008  ; GFX9:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
1009  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1010  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
1011  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.2d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1012  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1013  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1014  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1015  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1016  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1017  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1018  ; GFX10-LABEL: name: sample_c_b_2d
1019  ; GFX10: bb.1.main_body:
1020  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1021  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1022  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1023  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1024  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1025  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1026  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1027  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1028  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1029  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1030  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1031  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1032  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1033  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1034  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1035  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1036  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1037  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1038  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1039  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1040  ; GFX10:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
1041  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1042  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.2d), 15, [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1043  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1044  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1045  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1046  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1047  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1048  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1049main_body:
1050  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.2d.v4f32.f32.f16(i32 15, float %bias, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1051  ret <4 x float> %v
1052}
1053
1054define amdgpu_ps <4 x float> @sample_b_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, half %s, half %clamp) {
1055  ; GFX9-LABEL: name: sample_b_cl_1d
1056  ; GFX9: bb.1.main_body:
1057  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
1058  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1059  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1060  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1061  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1062  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1063  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1064  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1065  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1066  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1067  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1068  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1069  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1070  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1071  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1072  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1073  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1074  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1075  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1076  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1077  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
1078  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.cl.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1079  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1080  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1081  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1082  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1083  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1084  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1085  ; GFX10-LABEL: name: sample_b_cl_1d
1086  ; GFX10: bb.1.main_body:
1087  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
1088  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1089  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1090  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1091  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1092  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1093  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1094  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1095  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1096  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1097  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1098  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1099  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1100  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1101  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1102  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1103  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1104  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1105  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1106  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1107  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
1108  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.cl.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1109  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1110  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1111  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1112  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1113  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1114  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1115main_body:
1116  %v = call <4 x float> @llvm.amdgcn.image.sample.b.cl.1d.v4f32.f32.f16(i32 15, float %bias, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1117  ret <4 x float> %v
1118}
1119
1120define amdgpu_ps <4 x float> @sample_b_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, half %s, half %t, half %clamp) {
1121  ; GFX9-LABEL: name: sample_b_cl_2d
1122  ; GFX9: bb.1.main_body:
1123  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1124  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1125  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1126  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1127  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1128  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1129  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1130  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1131  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1132  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1133  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1134  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1135  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1136  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1137  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1138  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1139  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1140  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1141  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1142  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1143  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1144  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1145  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
1146  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
1147  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.cl.2d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1148  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1149  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1150  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1151  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1152  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1153  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1154  ; GFX10-LABEL: name: sample_b_cl_2d
1155  ; GFX10: bb.1.main_body:
1156  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1157  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1158  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1159  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1160  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1161  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1162  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1163  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1164  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1165  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1166  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1167  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1168  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1169  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1170  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1171  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1172  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1173  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1174  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1175  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1176  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1177  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1178  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
1179  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.b.cl.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1180  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1181  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1182  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1183  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1184  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1185  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1186main_body:
1187  %v = call <4 x float> @llvm.amdgcn.image.sample.b.cl.2d.v4f32.f32.f16(i32 15, float %bias, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1188  ret <4 x float> %v
1189}
1190
1191define amdgpu_ps <4 x float> @sample_c_b_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, float %zcompare, half %s, half %clamp) {
1192  ; GFX9-LABEL: name: sample_c_b_cl_1d
1193  ; GFX9: bb.1.main_body:
1194  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1195  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1196  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1197  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1198  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1199  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1200  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1201  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1202  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1203  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1204  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1205  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1206  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1207  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1208  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1209  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1210  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1211  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1212  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1213  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1214  ; GFX9:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
1215  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1216  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
1217  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.cl.1d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1218  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1219  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1220  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1221  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1222  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1223  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1224  ; GFX10-LABEL: name: sample_c_b_cl_1d
1225  ; GFX10: bb.1.main_body:
1226  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1227  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1228  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1229  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1230  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1231  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1232  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1233  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1234  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1235  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1236  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1237  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1238  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1239  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1240  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1241  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1242  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1243  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1244  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1245  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1246  ; GFX10:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
1247  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1248  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.cl.1d), 15, [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1249  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1250  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1251  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1252  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1253  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1254  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1255main_body:
1256  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.cl.1d.v4f32.f32.f16(i32 15, float %bias, float %zcompare, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1257  ret <4 x float> %v
1258}
1259
1260define amdgpu_ps <4 x float> @sample_c_b_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %bias, float %zcompare, half %s, half %t, half %clamp) {
1261  ; GFX9-LABEL: name: sample_c_b_cl_2d
1262  ; GFX9: bb.1.main_body:
1263  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
1264  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1265  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1266  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1267  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1268  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1269  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1270  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1271  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1272  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1273  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1274  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1275  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1276  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1277  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1278  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1279  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1280  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1281  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1282  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1283  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1284  ; GFX9:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
1285  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1286  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1287  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[DEF]](s32)
1288  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
1289  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.cl.2d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1290  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1291  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1292  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1293  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1294  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1295  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1296  ; GFX10-LABEL: name: sample_c_b_cl_2d
1297  ; GFX10: bb.1.main_body:
1298  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
1299  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1300  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1301  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1302  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1303  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1304  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1305  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1306  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1307  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1308  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1309  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1310  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1311  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1312  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1313  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1314  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1315  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1316  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1317  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1318  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1319  ; GFX10:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
1320  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1321  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1322  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[DEF]](s32)
1323  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.b.cl.2d), 15, [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1324  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1325  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1326  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1327  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1328  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1329  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1330main_body:
1331  %v = call <4 x float> @llvm.amdgcn.image.sample.c.b.cl.2d.v4f32.f32.f16(i32 15, float %bias, float %zcompare, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1332  ret <4 x float> %v
1333}
1334
1335define amdgpu_ps <4 x float> @sample_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, half %s) {
1336  ; GFX9-LABEL: name: sample_d_1d
1337  ; GFX9: bb.1.main_body:
1338  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
1339  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1340  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1341  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1342  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1343  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1344  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1345  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1346  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1347  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1348  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1349  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1350  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1351  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1352  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1353  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1354  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1355  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1356  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1357  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
1358  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1359  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1360  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
1361  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.1d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1362  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1363  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1364  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1365  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1366  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1367  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1368  ; GFX10-LABEL: name: sample_d_1d
1369  ; GFX10: bb.1.main_body:
1370  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
1371  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1372  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1373  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1374  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1375  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1376  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1377  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1378  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1379  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1380  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1381  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1382  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1383  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1384  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1385  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1386  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1387  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1388  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1389  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
1390  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1391  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1392  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1393  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1394  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1395  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1396  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1397  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1398  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1399main_body:
1400  %v = call <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f16(i32 15, half %dsdh, half %dsdv, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1401  ret <4 x float> %v
1402}
1403
1404define amdgpu_ps <4 x float> @sample_d_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t) {
1405  ; GFX9-LABEL: name: sample_d_2d
1406  ; GFX9: bb.1.main_body:
1407  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
1408  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1409  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1410  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1411  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1412  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1413  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1414  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1415  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1416  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1417  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1418  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1419  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1420  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1421  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1422  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1423  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1424  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1425  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1426  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1427  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1428  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
1429  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1430  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
1431  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
1432  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.2d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1433  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1434  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1435  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1436  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1437  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1438  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1439  ; GFX10-LABEL: name: sample_d_2d
1440  ; GFX10: bb.1.main_body:
1441  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
1442  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1443  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1444  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1445  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1446  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1447  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1448  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1449  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1450  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1451  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1452  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1453  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1454  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1455  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1456  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1457  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1458  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1459  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1460  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1461  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1462  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
1463  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1464  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
1465  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1466  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1467  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1468  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1469  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1470  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1471  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1472main_body:
1473  %v = call <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1474  ret <4 x float> %v
1475}
1476
1477define amdgpu_ps <4 x float> @sample_d_3d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, half %s, half %t, half %r) {
1478  ; GFX9-LABEL: name: sample_d_3d
1479  ; GFX9: bb.1.main_body:
1480  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1481  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1482  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1483  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1484  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1485  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1486  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1487  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1488  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1489  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1490  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1491  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1492  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1493  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1494  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1495  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1496  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1497  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1498  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1499  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1500  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1501  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1502  ; GFX9:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
1503  ; GFX9:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr8
1504  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
1505  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1506  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1507  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1508  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[DEF]](s32)
1509  ; GFX9:   [[BUILD_VECTOR_TRUNC4:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[COPY19]](s32)
1510  ; GFX9:   [[BUILD_VECTOR_TRUNC5:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY20]](s32), [[DEF]](s32)
1511  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), [[BUILD_VECTOR_TRUNC4]](<2 x s16>), [[BUILD_VECTOR_TRUNC5]](<2 x s16>)
1512  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.3d), 15, [[CONCAT_VECTORS]](<12 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1513  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1514  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1515  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1516  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1517  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1518  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1519  ; GFX10-LABEL: name: sample_d_3d
1520  ; GFX10: bb.1.main_body:
1521  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
1522  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1523  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1524  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1525  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1526  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1527  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1528  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1529  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1530  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1531  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1532  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1533  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1534  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1535  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1536  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1537  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1538  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1539  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1540  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1541  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1542  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1543  ; GFX10:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
1544  ; GFX10:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr8
1545  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
1546  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1547  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1548  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1549  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[DEF]](s32)
1550  ; GFX10:   [[BUILD_VECTOR_TRUNC4:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[COPY19]](s32)
1551  ; GFX10:   [[BUILD_VECTOR_TRUNC5:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY20]](s32), [[DEF]](s32)
1552  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), [[BUILD_VECTOR_TRUNC4]](<2 x s16>), [[BUILD_VECTOR_TRUNC5]](<2 x s16>)
1553  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.3d), 15, [[CONCAT_VECTORS]](<12 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1554  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1555  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1556  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1557  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1558  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1559  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1560main_body:
1561  %v = call <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %drdh, half %dsdv, half %dtdv, half %drdv, half %s, half %t, half %r, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1562  ret <4 x float> %v
1563}
1564
1565define amdgpu_ps <4 x float> @sample_c_d_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, half %s) {
1566  ; GFX9-LABEL: name: sample_c_d_1d
1567  ; GFX9: bb.1.main_body:
1568  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1569  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1570  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1571  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1572  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1573  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1574  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1575  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1576  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1577  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1578  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1579  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1580  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1581  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1582  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1583  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1584  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1585  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1586  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1587  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1588  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1589  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1590  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1591  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
1592  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
1593  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.1d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1594  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1595  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1596  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1597  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1598  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1599  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1600  ; GFX10-LABEL: name: sample_c_d_1d
1601  ; GFX10: bb.1.main_body:
1602  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1603  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1604  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1605  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1606  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1607  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1608  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1609  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1610  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1611  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1612  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1613  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1614  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1615  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1616  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1617  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1618  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1619  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1620  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1621  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1622  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1623  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1624  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1625  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
1626  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.1d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1627  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1628  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1629  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1630  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1631  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1632  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1633main_body:
1634  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dsdv, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1635  ret <4 x float> %v
1636}
1637
1638define amdgpu_ps <4 x float> @sample_c_d_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t) {
1639  ; GFX9-LABEL: name: sample_c_d_2d
1640  ; GFX9: bb.1.main_body:
1641  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
1642  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1643  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1644  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1645  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1646  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1647  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1648  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1649  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1650  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1651  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1652  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1653  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1654  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1655  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1656  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1657  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1658  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1659  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1660  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1661  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1662  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1663  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1664  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1665  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1666  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
1667  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
1668  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.2d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1669  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1670  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1671  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1672  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1673  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1674  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1675  ; GFX10-LABEL: name: sample_c_d_2d
1676  ; GFX10: bb.1.main_body:
1677  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
1678  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1679  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1680  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1681  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1682  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1683  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1684  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1685  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1686  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1687  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1688  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1689  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1690  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1691  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1692  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1693  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1694  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1695  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1696  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1697  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1698  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1699  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1700  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1701  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1702  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
1703  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1704  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1705  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1706  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1707  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1708  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1709  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1710main_body:
1711  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1712  ret <4 x float> %v
1713}
1714
1715define amdgpu_ps <4 x float> @sample_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, half %s, half %clamp) {
1716  ; GFX9-LABEL: name: sample_d_cl_1d
1717  ; GFX9: bb.1.main_body:
1718  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1719  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1720  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1721  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1722  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1723  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1724  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1725  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1726  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1727  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1728  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1729  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1730  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1731  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1732  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1733  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1734  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1735  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1736  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1737  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1738  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
1739  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1740  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1741  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
1742  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.cl.1d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1743  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1744  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1745  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1746  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1747  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1748  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1749  ; GFX10-LABEL: name: sample_d_cl_1d
1750  ; GFX10: bb.1.main_body:
1751  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
1752  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1753  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1754  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1755  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1756  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1757  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1758  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1759  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1760  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1761  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1762  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1763  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1764  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1765  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1766  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1767  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1768  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1769  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1770  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1771  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
1772  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1773  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1774  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.cl.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1775  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1776  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1777  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1778  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1779  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1780  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1781main_body:
1782  %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f16(i32 15, half %dsdh, half %dsdv, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1783  ret <4 x float> %v
1784}
1785
1786define amdgpu_ps <4 x float> @sample_d_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp) {
1787  ; GFX9-LABEL: name: sample_d_cl_2d
1788  ; GFX9: bb.1.main_body:
1789  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
1790  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1791  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1792  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1793  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1794  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1795  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1796  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1797  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1798  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1799  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1800  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1801  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1802  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1803  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1804  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1805  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1806  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1807  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1808  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1809  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1810  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1811  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
1812  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1813  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
1814  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1815  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[DEF]](s32)
1816  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
1817  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.cl.2d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1818  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1819  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1820  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1821  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1822  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1823  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1824  ; GFX10-LABEL: name: sample_d_cl_2d
1825  ; GFX10: bb.1.main_body:
1826  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
1827  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1828  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1829  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1830  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1831  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1832  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1833  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1834  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1835  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1836  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1837  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1838  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1839  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1840  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1841  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1842  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1843  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1844  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1845  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1846  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1847  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1848  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
1849  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
1850  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
1851  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1852  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[DEF]](s32)
1853  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.d.cl.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1854  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1855  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1856  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1857  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1858  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1859  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1860main_body:
1861  %v = call <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1862  ret <4 x float> %v
1863}
1864
1865define amdgpu_ps <4 x float> @sample_c_d_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, half %s, half %clamp) {
1866  ; GFX9-LABEL: name: sample_c_d_cl_1d
1867  ; GFX9: bb.1.main_body:
1868  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
1869  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1870  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1871  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1872  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1873  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1874  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1875  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1876  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1877  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1878  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1879  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1880  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1881  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1882  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1883  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1884  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1885  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1886  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1887  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1888  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1889  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1890  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1891  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1892  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1893  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
1894  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.cl.1d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1895  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1896  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1897  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1898  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1899  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1900  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1901  ; GFX10-LABEL: name: sample_c_d_cl_1d
1902  ; GFX10: bb.1.main_body:
1903  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
1904  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1905  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1906  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1907  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1908  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1909  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1910  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1911  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1912  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1913  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1914  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1915  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1916  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1917  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1918  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1919  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1920  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1921  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1922  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1923  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1924  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1925  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
1926  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
1927  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1928  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.cl.1d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1929  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1930  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
1931  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
1932  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
1933  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
1934  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1935main_body:
1936  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dsdv, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
1937  ret <4 x float> %v
1938}
1939
1940define amdgpu_ps <4 x float> @sample_c_d_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp) {
1941  ; GFX9-LABEL: name: sample_c_d_cl_2d
1942  ; GFX9: bb.1.main_body:
1943  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7
1944  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1945  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1946  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1947  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1948  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1949  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1950  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1951  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1952  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1953  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1954  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1955  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1956  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1957  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1958  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1959  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1960  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
1961  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
1962  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
1963  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
1964  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
1965  ; GFX9:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
1966  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
1967  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
1968  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
1969  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
1970  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
1971  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY19]](s32), [[DEF]](s32)
1972  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<10 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
1973  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.cl.2d), 15, [[CONCAT_VECTORS]](<10 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
1974  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
1975  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
1976  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
1977  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
1978  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
1979  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
1980  ; GFX10-LABEL: name: sample_c_d_cl_2d
1981  ; GFX10: bb.1.main_body:
1982  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7
1983  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
1984  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
1985  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
1986  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
1987  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
1988  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
1989  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
1990  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
1991  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
1992  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
1993  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
1994  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
1995  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
1996  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
1997  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
1998  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
1999  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2000  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2001  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2002  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2003  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2004  ; GFX10:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
2005  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2006  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2007  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2008  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
2009  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2010  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY19]](s32), [[DEF]](s32)
2011  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.cl.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2012  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2013  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2014  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2015  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2016  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2017  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2018main_body:
2019  %v = call <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2020  ret <4 x float> %v
2021}
2022
2023define amdgpu_ps <4 x float> @sample_cd_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, half %s) {
2024  ; GFX9-LABEL: name: sample_cd_1d
2025  ; GFX9: bb.1.main_body:
2026  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
2027  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2028  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2029  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2030  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2031  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2032  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2033  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2034  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2035  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2036  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2037  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2038  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2039  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2040  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2041  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2042  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2043  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2044  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2045  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
2046  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2047  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2048  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
2049  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.1d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2050  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2051  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2052  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2053  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2054  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2055  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2056  ; GFX10-LABEL: name: sample_cd_1d
2057  ; GFX10: bb.1.main_body:
2058  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
2059  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2060  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2061  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2062  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2063  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2064  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2065  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2066  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2067  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2068  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2069  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2070  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2071  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2072  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2073  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2074  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2075  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2076  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2077  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
2078  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2079  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2080  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2081  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2082  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2083  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2084  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2085  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2086  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2087main_body:
2088  %v = call <4 x float> @llvm.amdgcn.image.sample.cd.1d.v4f32.f16.f16(i32 15, half %dsdh, half %dsdv, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2089  ret <4 x float> %v
2090}
2091
2092define amdgpu_ps <4 x float> @sample_cd_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t) {
2093  ; GFX9-LABEL: name: sample_cd_2d
2094  ; GFX9: bb.1.main_body:
2095  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
2096  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2097  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2098  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2099  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2100  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2101  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2102  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2103  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2104  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2105  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2106  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2107  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2108  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2109  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2110  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2111  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2112  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2113  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2114  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2115  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2116  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2117  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
2118  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
2119  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
2120  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.2d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2121  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2122  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2123  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2124  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2125  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2126  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2127  ; GFX10-LABEL: name: sample_cd_2d
2128  ; GFX10: bb.1.main_body:
2129  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5
2130  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2131  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2132  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2133  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2134  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2135  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2136  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2137  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2138  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2139  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2140  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2141  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2142  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2143  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2144  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2145  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2146  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2147  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2148  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2149  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2150  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2151  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
2152  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
2153  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2154  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2155  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2156  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2157  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2158  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2159  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2160main_body:
2161  %v = call <4 x float> @llvm.amdgcn.image.sample.cd.2d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2162  ret <4 x float> %v
2163}
2164
2165define amdgpu_ps <4 x float> @sample_c_cd_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, half %s) {
2166  ; GFX9-LABEL: name: sample_c_cd_1d
2167  ; GFX9: bb.1.main_body:
2168  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2169  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2170  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2171  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2172  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2173  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2174  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2175  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2176  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2177  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2178  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2179  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2180  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2181  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2182  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2183  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2184  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2185  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2186  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2187  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2188  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2189  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2190  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2191  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
2192  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
2193  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.1d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2194  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2195  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2196  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2197  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2198  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2199  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2200  ; GFX10-LABEL: name: sample_c_cd_1d
2201  ; GFX10: bb.1.main_body:
2202  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2203  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2204  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2205  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2206  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2207  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2208  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2209  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2210  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2211  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2212  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2213  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2214  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2215  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2216  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2217  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2218  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2219  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2220  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2221  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2222  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2223  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2224  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2225  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
2226  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.1d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2227  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2228  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2229  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2230  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2231  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2232  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2233main_body:
2234  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.1d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dsdv, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2235  ret <4 x float> %v
2236}
2237
2238define amdgpu_ps <4 x float> @sample_c_cd_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t) {
2239  ; GFX9-LABEL: name: sample_c_cd_2d
2240  ; GFX9: bb.1.main_body:
2241  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
2242  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2243  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2244  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2245  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2246  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2247  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2248  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2249  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2250  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2251  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2252  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2253  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2254  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2255  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2256  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2257  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2258  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2259  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2260  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2261  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2262  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2263  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2264  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2265  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2266  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
2267  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
2268  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.2d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2269  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2270  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2271  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2272  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2273  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2274  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2275  ; GFX10-LABEL: name: sample_c_cd_2d
2276  ; GFX10: bb.1.main_body:
2277  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
2278  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2279  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2280  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2281  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2282  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2283  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2284  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2285  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2286  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2287  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2288  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2289  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2290  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2291  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2292  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2293  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2294  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2295  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2296  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2297  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2298  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2299  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2300  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2301  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2302  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
2303  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2304  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2305  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2306  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2307  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2308  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2309  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2310main_body:
2311  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.2d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2312  ret <4 x float> %v
2313}
2314
2315define amdgpu_ps <4 x float> @sample_cd_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dsdv, half %s, half %clamp) {
2316  ; GFX9-LABEL: name: sample_cd_cl_1d
2317  ; GFX9: bb.1.main_body:
2318  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2319  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2320  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2321  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2322  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2323  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2324  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2325  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2326  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2327  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2328  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2329  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2330  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2331  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2332  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2333  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2334  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2335  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2336  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2337  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2338  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
2339  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2340  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
2341  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
2342  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.cl.1d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2343  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2344  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2345  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2346  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2347  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2348  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2349  ; GFX10-LABEL: name: sample_cd_cl_1d
2350  ; GFX10: bb.1.main_body:
2351  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2352  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2353  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2354  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2355  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2356  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2357  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2358  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2359  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2360  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2361  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2362  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2363  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2364  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2365  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2366  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2367  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2368  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2369  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2370  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2371  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[DEF]](s32)
2372  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2373  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
2374  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.cl.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2375  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2376  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2377  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2378  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2379  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2380  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2381main_body:
2382  %v = call <4 x float> @llvm.amdgcn.image.sample.cd.cl.1d.v4f32.f16.f16(i32 15, half %dsdh, half %dsdv, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2383  ret <4 x float> %v
2384}
2385
2386define amdgpu_ps <4 x float> @sample_cd_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp) {
2387  ; GFX9-LABEL: name: sample_cd_cl_2d
2388  ; GFX9: bb.1.main_body:
2389  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
2390  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2391  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2392  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2393  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2394  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2395  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2396  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2397  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2398  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2399  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2400  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2401  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2402  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2403  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2404  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2405  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2406  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2407  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2408  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2409  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2410  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2411  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2412  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
2413  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
2414  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2415  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[DEF]](s32)
2416  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
2417  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.cl.2d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2418  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2419  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2420  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2421  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2422  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2423  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2424  ; GFX10-LABEL: name: sample_cd_cl_2d
2425  ; GFX10: bb.1.main_body:
2426  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6
2427  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2428  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2429  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2430  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2431  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2432  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2433  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2434  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2435  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2436  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2437  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2438  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2439  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2440  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2441  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2442  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2443  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2444  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2445  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2446  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2447  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2448  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2449  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
2450  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
2451  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2452  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[DEF]](s32)
2453  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.cd.cl.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2454  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2455  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2456  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2457  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2458  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2459  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2460main_body:
2461  %v = call <4 x float> @llvm.amdgcn.image.sample.cd.cl.2d.v4f32.f16.f16(i32 15, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2462  ret <4 x float> %v
2463}
2464
2465define amdgpu_ps <4 x float> @sample_c_cd_cl_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dsdv, half %s, half %clamp) {
2466  ; GFX9-LABEL: name: sample_c_cd_cl_1d
2467  ; GFX9: bb.1.main_body:
2468  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
2469  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2470  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2471  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2472  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2473  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2474  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2475  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2476  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2477  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2478  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2479  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2480  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2481  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2482  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2483  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2484  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2485  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2486  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2487  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2488  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2489  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2490  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2491  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2492  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2493  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<8 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>)
2494  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.cl.1d), 15, [[CONCAT_VECTORS]](<8 x s16>), $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2495  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2496  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2497  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2498  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2499  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2500  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2501  ; GFX10-LABEL: name: sample_c_cd_cl_1d
2502  ; GFX10: bb.1.main_body:
2503  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4
2504  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2505  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2506  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2507  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2508  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2509  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2510  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2511  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2512  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2513  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2514  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2515  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2516  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2517  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2518  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2519  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2520  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2521  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2522  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2523  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2524  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2525  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
2526  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2527  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2528  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.cl.1d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2529  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2530  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2531  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2532  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2533  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2534  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2535main_body:
2536  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.1d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dsdv, half %s, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2537  ret <4 x float> %v
2538}
2539
2540define amdgpu_ps <4 x float> @sample_c_cd_cl_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp) {
2541  ; GFX9-LABEL: name: sample_c_cd_cl_2d
2542  ; GFX9: bb.1.main_body:
2543  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7
2544  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2545  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2546  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2547  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2548  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2549  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2550  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2551  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2552  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2553  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2554  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2555  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2556  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2557  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2558  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2559  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2560  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2561  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2562  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2563  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2564  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2565  ; GFX9:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
2566  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2567  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2568  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2569  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
2570  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2571  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY19]](s32), [[DEF]](s32)
2572  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<10 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
2573  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.cl.2d), 15, [[CONCAT_VECTORS]](<10 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2574  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2575  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2576  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2577  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2578  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2579  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2580  ; GFX10-LABEL: name: sample_c_cd_cl_2d
2581  ; GFX10: bb.1.main_body:
2582  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7
2583  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2584  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2585  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2586  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2587  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2588  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2589  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2590  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2591  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2592  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2593  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2594  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2595  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2596  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2597  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2598  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2599  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2600  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2601  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
2602  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
2603  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
2604  ; GFX10:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
2605  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2606  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2607  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[COPY16]](s32)
2608  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY17]](s32), [[COPY18]](s32)
2609  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2610  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY19]](s32), [[DEF]](s32)
2611  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.cd.cl.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2612  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2613  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2614  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2615  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2616  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2617  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2618main_body:
2619  %v = call <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.2d.v4f32.f32.f16(i32 15, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %clamp, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2620  ret <4 x float> %v
2621}
2622
2623define amdgpu_ps <4 x float> @sample_l_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %lod) {
2624  ; GFX9-LABEL: name: sample_l_1d
2625  ; GFX9: bb.1.main_body:
2626  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
2627  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2628  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2629  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2630  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2631  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2632  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2633  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2634  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2635  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2636  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2637  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2638  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2639  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2640  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2641  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2642  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2643  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2644  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.l.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2645  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2646  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2647  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2648  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2649  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2650  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2651  ; GFX10-LABEL: name: sample_l_1d
2652  ; GFX10: bb.1.main_body:
2653  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
2654  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2655  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2656  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2657  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2658  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2659  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2660  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2661  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2662  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2663  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2664  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2665  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2666  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2667  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2668  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2669  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2670  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2671  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.l.1d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2672  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2673  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2674  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2675  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2676  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2677  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2678main_body:
2679  %v = call <4 x float> @llvm.amdgcn.image.sample.l.1d.v4f32.f16(i32 15, half %s, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2680  ret <4 x float> %v
2681}
2682
2683define amdgpu_ps <4 x float> @sample_l_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t, half %lod) {
2684  ; GFX9-LABEL: name: sample_l_2d
2685  ; GFX9: bb.1.main_body:
2686  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
2687  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2688  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2689  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2690  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2691  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2692  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2693  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2694  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2695  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2696  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2697  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2698  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2699  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2700  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2701  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2702  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2703  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2704  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2705  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2706  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2707  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
2708  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.l.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2709  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2710  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2711  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2712  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2713  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2714  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2715  ; GFX10-LABEL: name: sample_l_2d
2716  ; GFX10: bb.1.main_body:
2717  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
2718  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2719  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2720  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2721  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2722  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2723  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2724  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2725  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2726  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2727  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2728  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2729  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2730  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2731  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2732  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2733  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2734  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2735  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2736  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2737  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[DEF]](s32)
2738  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
2739  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.l.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2740  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2741  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2742  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2743  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2744  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2745  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2746main_body:
2747  %v = call <4 x float> @llvm.amdgcn.image.sample.l.2d.v4f32.f16(i32 15, half %s, half %t, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2748  ret <4 x float> %v
2749}
2750
2751define amdgpu_ps <4 x float> @sample_c_l_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %lod) {
2752  ; GFX9-LABEL: name: sample_c_l_1d
2753  ; GFX9: bb.1.main_body:
2754  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
2755  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2756  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2757  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2758  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2759  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2760  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2761  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2762  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2763  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2764  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2765  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2766  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2767  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2768  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2769  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2770  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2771  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2772  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2773  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2774  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
2775  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.l.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2776  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2777  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2778  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2779  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2780  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2781  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2782  ; GFX10-LABEL: name: sample_c_l_1d
2783  ; GFX10: bb.1.main_body:
2784  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
2785  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2786  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2787  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2788  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2789  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2790  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2791  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2792  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2793  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2794  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2795  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2796  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2797  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2798  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2799  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2800  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2801  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2802  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2803  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2804  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
2805  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.l.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2806  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2807  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2808  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2809  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2810  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2811  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2812main_body:
2813  %v = call <4 x float> @llvm.amdgcn.image.sample.c.l.1d.v4f32.f16(i32 15, float %zcompare, half %s, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2814  ret <4 x float> %v
2815}
2816
2817define amdgpu_ps <4 x float> @sample_c_l_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t, half %lod) {
2818  ; GFX9-LABEL: name: sample_c_l_2d
2819  ; GFX9: bb.1.main_body:
2820  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2821  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2822  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2823  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2824  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2825  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2826  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2827  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2828  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2829  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2830  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2831  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2832  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2833  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2834  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2835  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2836  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2837  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2838  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2839  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2840  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2841  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2842  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
2843  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>)
2844  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.l.2d), 15, [[CONCAT_VECTORS]](<6 x s16>), $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2845  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2846  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2847  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2848  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2849  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2850  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2851  ; GFX10-LABEL: name: sample_c_l_2d
2852  ; GFX10: bb.1.main_body:
2853  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3
2854  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2855  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2856  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2857  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2858  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2859  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2860  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2861  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2862  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2863  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2864  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2865  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2866  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2867  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2868  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2869  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2870  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
2871  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
2872  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
2873  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
2874  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
2875  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY15]](s32), [[DEF]](s32)
2876  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.l.2d), 15, [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2877  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2878  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2879  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2880  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2881  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2882  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2883main_body:
2884  %v = call <4 x float> @llvm.amdgcn.image.sample.c.l.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, half %lod, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2885  ret <4 x float> %v
2886}
2887
2888define amdgpu_ps <4 x float> @sample_lz_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s) {
2889  ; GFX9-LABEL: name: sample_lz_1d
2890  ; GFX9: bb.1.main_body:
2891  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0
2892  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2893  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2894  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2895  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2896  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2897  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2898  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2899  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2900  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2901  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2902  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2903  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2904  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2905  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2906  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2907  ; GFX9:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)
2908  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.lz.1d), 15, [[TRUNC]](s16), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2909  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2910  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2911  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2912  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2913  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2914  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2915  ; GFX10-LABEL: name: sample_lz_1d
2916  ; GFX10: bb.1.main_body:
2917  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0
2918  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2919  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2920  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2921  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2922  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2923  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2924  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2925  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2926  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2927  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2928  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2929  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2930  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2931  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2932  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2933  ; GFX10:   [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY12]](s32)
2934  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.lz.1d), 15, [[TRUNC]](s16), [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2935  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2936  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2937  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2938  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2939  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
2940  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2941main_body:
2942  %v = call <4 x float> @llvm.amdgcn.image.sample.lz.1d.v4f32.f16(i32 15, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
2943  ret <4 x float> %v
2944}
2945
2946define amdgpu_ps <4 x float> @sample_lz_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, half %s, half %t) {
2947  ; GFX9-LABEL: name: sample_lz_2d
2948  ; GFX9: bb.1.main_body:
2949  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
2950  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2951  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2952  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2953  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2954  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2955  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2956  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2957  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2958  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2959  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2960  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2961  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2962  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2963  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2964  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2965  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2966  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2967  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.lz.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2968  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2969  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
2970  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
2971  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
2972  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
2973  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
2974  ; GFX10-LABEL: name: sample_lz_2d
2975  ; GFX10: bb.1.main_body:
2976  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
2977  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
2978  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
2979  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
2980  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
2981  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
2982  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
2983  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
2984  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
2985  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
2986  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
2987  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
2988  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
2989  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
2990  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
2991  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
2992  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
2993  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY12]](s32), [[COPY13]](s32)
2994  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.lz.2d), 15, [[BUILD_VECTOR_TRUNC]](<2 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
2995  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
2996  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
2997  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
2998  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
2999  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
3000  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
3001main_body:
3002  %v = call <4 x float> @llvm.amdgcn.image.sample.lz.2d.v4f32.f16(i32 15, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
3003  ret <4 x float> %v
3004}
3005
3006define amdgpu_ps <4 x float> @sample_c_lz_1d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s) {
3007  ; GFX9-LABEL: name: sample_c_lz_1d
3008  ; GFX9: bb.1.main_body:
3009  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
3010  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3011  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3012  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3013  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3014  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3015  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3016  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3017  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3018  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3019  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3020  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3021  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3022  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3023  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3024  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3025  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3026  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3027  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
3028  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
3029  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
3030  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.lz.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
3031  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
3032  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
3033  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
3034  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
3035  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
3036  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
3037  ; GFX10-LABEL: name: sample_c_lz_1d
3038  ; GFX10: bb.1.main_body:
3039  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1
3040  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3041  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3042  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3043  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3044  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3045  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3046  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3047  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3048  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3049  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3050  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3051  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3052  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3053  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3054  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3055  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3056  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3057  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
3058  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[DEF]](s32)
3059  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
3060  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.lz.1d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
3061  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
3062  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
3063  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
3064  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
3065  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
3066  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
3067main_body:
3068  %v = call <4 x float> @llvm.amdgcn.image.sample.c.lz.1d.v4f32.f16(i32 15, float %zcompare, half %s, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
3069  ret <4 x float> %v
3070}
3071
3072define amdgpu_ps <4 x float> @sample_c_lz_2d(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, float %zcompare, half %s, half %t) {
3073  ; GFX9-LABEL: name: sample_c_lz_2d
3074  ; GFX9: bb.1.main_body:
3075  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
3076  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3077  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3078  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3079  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3080  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3081  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3082  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3083  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3084  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3085  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3086  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3087  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3088  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3089  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3090  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3091  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3092  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
3093  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3094  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
3095  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
3096  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.lz.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
3097  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
3098  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
3099  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
3100  ; GFX9:   $vgpr2 = COPY [[UV2]](s32)
3101  ; GFX9:   $vgpr3 = COPY [[UV3]](s32)
3102  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
3103  ; GFX10-LABEL: name: sample_c_lz_2d
3104  ; GFX10: bb.1.main_body:
3105  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2
3106  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3107  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3108  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3109  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3110  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3111  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3112  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3113  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3114  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3115  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3116  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3117  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3118  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3119  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3120  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3121  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3122  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
3123  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3124  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY13]](s32), [[COPY14]](s32)
3125  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>)
3126  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<4 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.lz.2d), 15, [[CONCAT_VECTORS]](<4 x s16>), $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<4 x s32>) from custom "ImageResource")
3127  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<4 x s32>)
3128  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
3129  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
3130  ; GFX10:   $vgpr2 = COPY [[UV2]](s32)
3131  ; GFX10:   $vgpr3 = COPY [[UV3]](s32)
3132  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1, implicit $vgpr2, implicit $vgpr3
3133main_body:
3134  %v = call <4 x float> @llvm.amdgcn.image.sample.c.lz.2d.v4f32.f16(i32 15, float %zcompare, half %s, half %t, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
3135  ret <4 x float> %v
3136}
3137
3138define amdgpu_ps float @sample_c_d_o_2darray_V1(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice) {
3139  ; GFX9-LABEL: name: sample_c_d_o_2darray_V1
3140  ; GFX9: bb.1.main_body:
3141  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
3142  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3143  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3144  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3145  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3146  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3147  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3148  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3149  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3150  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3151  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3152  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3153  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3154  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3155  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3156  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3157  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3158  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
3159  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
3160  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
3161  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
3162  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
3163  ; GFX9:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
3164  ; GFX9:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr8
3165  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3166  ; GFX9:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
3167  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
3168  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
3169  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[COPY19]](s32)
3170  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
3171  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY20]](s32), [[DEF]](s32)
3172  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
3173  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(s32) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.o.2darray), 4, [[CONCAT_VECTORS]](<12 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (s32) from custom "ImageResource")
3174  ; GFX9:   $vgpr0 = COPY [[AMDGPU_INTRIN_IMAGE_LOAD]](s32)
3175  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0
3176  ; GFX10-LABEL: name: sample_c_d_o_2darray_V1
3177  ; GFX10: bb.1.main_body:
3178  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
3179  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3180  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3181  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3182  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3183  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3184  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3185  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3186  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3187  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3188  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3189  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3190  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3191  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3192  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3193  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3194  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3195  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
3196  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
3197  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
3198  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
3199  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
3200  ; GFX10:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
3201  ; GFX10:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr8
3202  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3203  ; GFX10:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
3204  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
3205  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
3206  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[COPY19]](s32)
3207  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
3208  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY20]](s32), [[DEF]](s32)
3209  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
3210  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(s32) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.o.2darray), 4, [[CONCAT_VECTORS]](<12 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (s32) from custom "ImageResource")
3211  ; GFX10:   $vgpr0 = COPY [[AMDGPU_INTRIN_IMAGE_LOAD]](s32)
3212  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0
3213main_body:
3214  %v = call float @llvm.amdgcn.image.sample.c.d.o.2darray.f32.f16.f16(i32 4, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
3215  ret float %v
3216}
3217
3218define amdgpu_ps <2 x float> @sample_c_d_o_2darray_V2(<8 x i32> inreg %rsrc, <4 x i32> inreg %samp, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice) {
3219  ; GFX9-LABEL: name: sample_c_d_o_2darray_V2
3220  ; GFX9: bb.1.main_body:
3221  ; GFX9:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
3222  ; GFX9:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3223  ; GFX9:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3224  ; GFX9:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3225  ; GFX9:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3226  ; GFX9:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3227  ; GFX9:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3228  ; GFX9:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3229  ; GFX9:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3230  ; GFX9:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3231  ; GFX9:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3232  ; GFX9:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3233  ; GFX9:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3234  ; GFX9:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3235  ; GFX9:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3236  ; GFX9:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3237  ; GFX9:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3238  ; GFX9:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
3239  ; GFX9:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
3240  ; GFX9:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
3241  ; GFX9:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
3242  ; GFX9:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
3243  ; GFX9:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
3244  ; GFX9:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr8
3245  ; GFX9:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3246  ; GFX9:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
3247  ; GFX9:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
3248  ; GFX9:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
3249  ; GFX9:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[COPY19]](s32)
3250  ; GFX9:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
3251  ; GFX9:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY20]](s32), [[DEF]](s32)
3252  ; GFX9:   [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
3253  ; GFX9:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<2 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.o.2darray), 6, [[CONCAT_VECTORS]](<12 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<2 x s32>) from custom "ImageResource")
3254  ; GFX9:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<2 x s32>)
3255  ; GFX9:   $vgpr0 = COPY [[UV]](s32)
3256  ; GFX9:   $vgpr1 = COPY [[UV1]](s32)
3257  ; GFX9:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
3258  ; GFX10-LABEL: name: sample_c_d_o_2darray_V2
3259  ; GFX10: bb.1.main_body:
3260  ; GFX10:   liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $sgpr7, $sgpr8, $sgpr9, $sgpr10, $sgpr11, $sgpr12, $sgpr13, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6, $vgpr7, $vgpr8
3261  ; GFX10:   [[COPY:%[0-9]+]]:_(s32) = COPY $sgpr2
3262  ; GFX10:   [[COPY1:%[0-9]+]]:_(s32) = COPY $sgpr3
3263  ; GFX10:   [[COPY2:%[0-9]+]]:_(s32) = COPY $sgpr4
3264  ; GFX10:   [[COPY3:%[0-9]+]]:_(s32) = COPY $sgpr5
3265  ; GFX10:   [[COPY4:%[0-9]+]]:_(s32) = COPY $sgpr6
3266  ; GFX10:   [[COPY5:%[0-9]+]]:_(s32) = COPY $sgpr7
3267  ; GFX10:   [[COPY6:%[0-9]+]]:_(s32) = COPY $sgpr8
3268  ; GFX10:   [[COPY7:%[0-9]+]]:_(s32) = COPY $sgpr9
3269  ; GFX10:   [[BUILD_VECTOR:%[0-9]+]]:_(<8 x s32>) = G_BUILD_VECTOR [[COPY]](s32), [[COPY1]](s32), [[COPY2]](s32), [[COPY3]](s32), [[COPY4]](s32), [[COPY5]](s32), [[COPY6]](s32), [[COPY7]](s32)
3270  ; GFX10:   [[COPY8:%[0-9]+]]:_(s32) = COPY $sgpr10
3271  ; GFX10:   [[COPY9:%[0-9]+]]:_(s32) = COPY $sgpr11
3272  ; GFX10:   [[COPY10:%[0-9]+]]:_(s32) = COPY $sgpr12
3273  ; GFX10:   [[COPY11:%[0-9]+]]:_(s32) = COPY $sgpr13
3274  ; GFX10:   [[BUILD_VECTOR1:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[COPY8]](s32), [[COPY9]](s32), [[COPY10]](s32), [[COPY11]](s32)
3275  ; GFX10:   [[COPY12:%[0-9]+]]:_(s32) = COPY $vgpr0
3276  ; GFX10:   [[COPY13:%[0-9]+]]:_(s32) = COPY $vgpr1
3277  ; GFX10:   [[COPY14:%[0-9]+]]:_(s32) = COPY $vgpr2
3278  ; GFX10:   [[COPY15:%[0-9]+]]:_(s32) = COPY $vgpr3
3279  ; GFX10:   [[COPY16:%[0-9]+]]:_(s32) = COPY $vgpr4
3280  ; GFX10:   [[COPY17:%[0-9]+]]:_(s32) = COPY $vgpr5
3281  ; GFX10:   [[COPY18:%[0-9]+]]:_(s32) = COPY $vgpr6
3282  ; GFX10:   [[COPY19:%[0-9]+]]:_(s32) = COPY $vgpr7
3283  ; GFX10:   [[COPY20:%[0-9]+]]:_(s32) = COPY $vgpr8
3284  ; GFX10:   [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY12]](s32)
3285  ; GFX10:   [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY13]](s32)
3286  ; GFX10:   [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY14]](s32), [[COPY15]](s32)
3287  ; GFX10:   [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY16]](s32), [[COPY17]](s32)
3288  ; GFX10:   [[BUILD_VECTOR_TRUNC2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY18]](s32), [[COPY19]](s32)
3289  ; GFX10:   [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
3290  ; GFX10:   [[BUILD_VECTOR_TRUNC3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[COPY20]](s32), [[DEF]](s32)
3291  ; GFX10:   [[CONCAT_VECTORS:%[0-9]+]]:_(<12 x s16>) = G_CONCAT_VECTORS [[BITCAST]](<2 x s16>), [[BITCAST1]](<2 x s16>), [[BUILD_VECTOR_TRUNC]](<2 x s16>), [[BUILD_VECTOR_TRUNC1]](<2 x s16>), [[BUILD_VECTOR_TRUNC2]](<2 x s16>), [[BUILD_VECTOR_TRUNC3]](<2 x s16>)
3292  ; GFX10:   [[AMDGPU_INTRIN_IMAGE_LOAD:%[0-9]+]]:_(<2 x s32>) = G_AMDGPU_INTRIN_IMAGE_LOAD intrinsic(@llvm.amdgcn.image.sample.c.d.o.2darray), 6, [[CONCAT_VECTORS]](<12 x s16>), $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, $noreg, [[BUILD_VECTOR]](<8 x s32>), [[BUILD_VECTOR1]](<4 x s32>), 0, 0, 0, 3 :: (dereferenceable load (<2 x s32>) from custom "ImageResource")
3293  ; GFX10:   [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[AMDGPU_INTRIN_IMAGE_LOAD]](<2 x s32>)
3294  ; GFX10:   $vgpr0 = COPY [[UV]](s32)
3295  ; GFX10:   $vgpr1 = COPY [[UV1]](s32)
3296  ; GFX10:   SI_RETURN_TO_EPILOG implicit $vgpr0, implicit $vgpr1
3297main_body:
3298  %v = call <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f32.f16(i32 6, i32 %offset, float %zcompare, half %dsdh, half %dtdh, half %dsdv, half %dtdv, half %s, half %t, half %slice, <8 x i32> %rsrc, <4 x i32> %samp, i1 0, i32 0, i32 0)
3299  ret <2 x float> %v
3300}
3301
3302declare <4 x float> @llvm.amdgcn.image.sample.1d.v4f32.f16(i32, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3303declare <8 x float> @llvm.amdgcn.image.sample.1d.v8f32.f16(i32, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3304declare <4 x float> @llvm.amdgcn.image.sample.2d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3305declare <4 x float> @llvm.amdgcn.image.sample.3d.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3306declare <4 x float> @llvm.amdgcn.image.sample.cube.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3307declare <4 x float> @llvm.amdgcn.image.sample.1darray.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3308declare <4 x float> @llvm.amdgcn.image.sample.2darray.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3309
3310declare <4 x float> @llvm.amdgcn.image.sample.c.1d.v4f32.f16(i32, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3311declare <4 x float> @llvm.amdgcn.image.sample.c.2d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3312declare <4 x float> @llvm.amdgcn.image.sample.cl.1d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3313declare <4 x float> @llvm.amdgcn.image.sample.cl.2d.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3314declare <4 x float> @llvm.amdgcn.image.sample.c.cl.1d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3315declare <4 x float> @llvm.amdgcn.image.sample.c.cl.2d.v4f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3316
3317declare <4 x float> @llvm.amdgcn.image.sample.b.1d.v4f32.f32.f16(i32, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3318declare <4 x float> @llvm.amdgcn.image.sample.b.2d.v4f32.f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3319declare <4 x float> @llvm.amdgcn.image.sample.c.b.1d.v4f32.f32.f16(i32, float, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3320declare <4 x float> @llvm.amdgcn.image.sample.c.b.2d.v4f32.f32.f16(i32, float, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3321declare <4 x float> @llvm.amdgcn.image.sample.b.cl.1d.v4f32.f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3322declare <4 x float> @llvm.amdgcn.image.sample.b.cl.2d.v4f32.f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3323declare <4 x float> @llvm.amdgcn.image.sample.c.b.cl.1d.v4f32.f32.f16(i32, float, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3324declare <4 x float> @llvm.amdgcn.image.sample.c.b.cl.2d.v4f32.f32.f16(i32, float, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3325
3326declare <4 x float> @llvm.amdgcn.image.sample.d.1d.v4f32.f16.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3327declare <4 x float> @llvm.amdgcn.image.sample.d.2d.v4f32.f16.f16(i32, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3328declare <4 x float> @llvm.amdgcn.image.sample.d.3d.v4f32.f16.f16(i32, half, half, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3329declare <4 x float> @llvm.amdgcn.image.sample.c.d.1d.v4f32.f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3330declare <4 x float> @llvm.amdgcn.image.sample.c.d.2d.v4f32.f32.f16(i32, float, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3331declare <4 x float> @llvm.amdgcn.image.sample.d.cl.1d.v4f32.f16.f16(i32, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3332declare <4 x float> @llvm.amdgcn.image.sample.d.cl.2d.v4f32.f16.f16(i32, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3333declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.1d.v4f32.f32.f16(i32, float, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3334declare <4 x float> @llvm.amdgcn.image.sample.c.d.cl.2d.v4f32.f32.f16(i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3335
3336declare <4 x float> @llvm.amdgcn.image.sample.cd.1d.v4f32.f16.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3337declare <4 x float> @llvm.amdgcn.image.sample.cd.2d.v4f32.f16.f16(i32, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3338declare <4 x float> @llvm.amdgcn.image.sample.c.cd.1d.v4f32.f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3339declare <4 x float> @llvm.amdgcn.image.sample.c.cd.2d.v4f32.f32.f16(i32, float, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3340declare <4 x float> @llvm.amdgcn.image.sample.cd.cl.1d.v4f32.f16.f16(i32, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3341declare <4 x float> @llvm.amdgcn.image.sample.cd.cl.2d.v4f32.f16.f16(i32, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3342declare <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.1d.v4f32.f32.f16(i32, float, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3343declare <4 x float> @llvm.amdgcn.image.sample.c.cd.cl.2d.v4f32.f32.f16(i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3344
3345declare <4 x float> @llvm.amdgcn.image.sample.l.1d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3346declare <4 x float> @llvm.amdgcn.image.sample.l.2d.v4f32.f16(i32, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3347declare <4 x float> @llvm.amdgcn.image.sample.c.l.1d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3348declare <4 x float> @llvm.amdgcn.image.sample.c.l.2d.v4f32.f16(i32, float, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3349
3350declare <4 x float> @llvm.amdgcn.image.sample.lz.1d.v4f32.f16(i32, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3351declare <4 x float> @llvm.amdgcn.image.sample.lz.2d.v4f32.f16(i32, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3352declare <4 x float> @llvm.amdgcn.image.sample.c.lz.1d.v4f32.f16(i32, float, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3353declare <4 x float> @llvm.amdgcn.image.sample.c.lz.2d.v4f32.f16(i32, float, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3354
3355declare float @llvm.amdgcn.image.sample.c.d.o.2darray.f32.f16.f16(i32, i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3356declare <2 x float> @llvm.amdgcn.image.sample.c.d.o.2darray.v2f32.f32.f16(i32, i32, float, half, half, half, half, half, half, half, <8 x i32>, <4 x i32>, i1, i32, i32) #1
3357
3358attributes #0 = { nounwind }
3359attributes #1 = { nounwind readonly }
3360attributes #2 = { nounwind readnone }
3361