Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / llvm.amdgcn.fcmp.w64.ll
blobd1883d9196af659f3f328996d970035f9bb00fcc
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize64" -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11,GFX11-SDAG %s
3 ; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx1100 -mattr="+wavefrontsize64" -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11,GFX11-GISEL %s
4 ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX9,GFX9-SDAG %s
5 ; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX9,GFX9-GISEL %s
6 ; RUN: llc -mtriple=amdgcn -mcpu=fiji -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-SDAG %s
7 ; RUN: llc -global-isel -mtriple=amdgcn -mcpu=fiji -verify-machineinstrs < %s | FileCheck -check-prefixes=VI-GISEL %s
9 declare i64 @llvm.amdgcn.fcmp.f32(float, float, i32) #0
10 declare i64 @llvm.amdgcn.fcmp.f64(double, double, i32) #0
11 declare float @llvm.fabs.f32(float) #0
13 declare i64 @llvm.amdgcn.fcmp.f16(half, half, i32) #0
14 declare half @llvm.fabs.f16(half) #0
16 define amdgpu_kernel void @v_fcmp_f32_oeq_with_fabs(ptr addrspace(1) %out, float %src, float %a) {
17 ; GFX11-LABEL: v_fcmp_f32_oeq_with_fabs:
18 ; GFX11:       ; %bb.0:
19 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
20 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
21 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
22 ; GFX11-NEXT:    v_cmp_eq_f32_e64 s[2:3], s2, |s3|
23 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
24 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
25 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
26 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
27 ; GFX11-NEXT:    s_nop 0
28 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
29 ; GFX11-NEXT:    s_endpgm
31 ; GFX9-LABEL: v_fcmp_f32_oeq_with_fabs:
32 ; GFX9:       ; %bb.0:
33 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
34 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
35 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
36 ; GFX9-NEXT:    v_mov_b32_e32 v0, s7
37 ; GFX9-NEXT:    v_cmp_eq_f32_e64 s[0:1], s6, |v0|
38 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
39 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
40 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
41 ; GFX9-NEXT:    s_endpgm
43 ; VI-SDAG-LABEL: v_fcmp_f32_oeq_with_fabs:
44 ; VI-SDAG:       ; %bb.0:
45 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
46 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
47 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s3
48 ; VI-SDAG-NEXT:    v_cmp_eq_f32_e64 s[2:3], s2, |v0|
49 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
50 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
51 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
52 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
53 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
54 ; VI-SDAG-NEXT:    s_endpgm
56 ; VI-GISEL-LABEL: v_fcmp_f32_oeq_with_fabs:
57 ; VI-GISEL:       ; %bb.0:
58 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
59 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
60 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s3
61 ; VI-GISEL-NEXT:    v_cmp_eq_f32_e64 s[2:3], s2, |v0|
62 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
63 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
64 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
65 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
66 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
67 ; VI-GISEL-NEXT:    s_endpgm
68   %temp = call float @llvm.fabs.f32(float %a)
69   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float %temp, i32 1)
70   store i64 %result, ptr addrspace(1) %out
71   ret void
74 define amdgpu_kernel void @v_fcmp_f32_oeq_both_operands_with_fabs(ptr addrspace(1) %out, float %src, float %a) {
75 ; GFX11-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:
76 ; GFX11:       ; %bb.0:
77 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
78 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
79 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
80 ; GFX11-NEXT:    v_cmp_eq_f32_e64 s[2:3], |s2|, |s3|
81 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
82 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
83 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
84 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
85 ; GFX11-NEXT:    s_nop 0
86 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
87 ; GFX11-NEXT:    s_endpgm
89 ; GFX9-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:
90 ; GFX9:       ; %bb.0:
91 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
92 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
93 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
94 ; GFX9-NEXT:    v_mov_b32_e32 v0, s7
95 ; GFX9-NEXT:    v_cmp_eq_f32_e64 s[0:1], |s6|, |v0|
96 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
97 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
98 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
99 ; GFX9-NEXT:    s_endpgm
101 ; VI-SDAG-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:
102 ; VI-SDAG:       ; %bb.0:
103 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
104 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
105 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s3
106 ; VI-SDAG-NEXT:    v_cmp_eq_f32_e64 s[2:3], |s2|, |v0|
107 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
108 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
109 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
110 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
111 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
112 ; VI-SDAG-NEXT:    s_endpgm
114 ; VI-GISEL-LABEL: v_fcmp_f32_oeq_both_operands_with_fabs:
115 ; VI-GISEL:       ; %bb.0:
116 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
117 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
118 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s3
119 ; VI-GISEL-NEXT:    v_cmp_eq_f32_e64 s[2:3], |s2|, |v0|
120 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
121 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
122 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
123 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
124 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
125 ; VI-GISEL-NEXT:    s_endpgm
126   %temp = call float @llvm.fabs.f32(float %a)
127   %src_input = call float @llvm.fabs.f32(float %src)
128   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src_input, float %temp, i32 1)
129   store i64 %result, ptr addrspace(1) %out
130   ret void
133 define amdgpu_kernel void @v_fcmp_f32(ptr addrspace(1) %out, float %src) {
134 ; GFX11-SDAG-LABEL: v_fcmp_f32:
135 ; GFX11-SDAG:       ; %bb.0:
136 ; GFX11-SDAG-NEXT:    s_endpgm
138 ; GFX11-GISEL-LABEL: v_fcmp_f32:
139 ; GFX11-GISEL:       ; %bb.0:
140 ; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
141 ; GFX11-GISEL-NEXT:    v_mov_b32_e32 v0, 0
142 ; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
143 ; GFX11-GISEL-NEXT:    global_store_b64 v0, v[0:1], s[0:1]
144 ; GFX11-GISEL-NEXT:    s_nop 0
145 ; GFX11-GISEL-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
146 ; GFX11-GISEL-NEXT:    s_endpgm
148 ; GFX9-SDAG-LABEL: v_fcmp_f32:
149 ; GFX9-SDAG:       ; %bb.0:
150 ; GFX9-SDAG-NEXT:    s_endpgm
152 ; GFX9-GISEL-LABEL: v_fcmp_f32:
153 ; GFX9-GISEL:       ; %bb.0:
154 ; GFX9-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
155 ; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, 0
156 ; GFX9-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
157 ; GFX9-GISEL-NEXT:    global_store_dwordx2 v0, v[0:1], s[0:1]
158 ; GFX9-GISEL-NEXT:    s_endpgm
160 ; VI-SDAG-LABEL: v_fcmp_f32:
161 ; VI-SDAG:       ; %bb.0:
162 ; VI-SDAG-NEXT:    s_endpgm
164 ; VI-GISEL-LABEL: v_fcmp_f32:
165 ; VI-GISEL:       ; %bb.0:
166 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
167 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
168 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s0
169 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s1
170 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[0:1], v[0:1]
171 ; VI-GISEL-NEXT:    s_endpgm
172   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 -1)
173   store i64 %result, ptr addrspace(1) %out
174   ret void
177 define amdgpu_kernel void @v_fcmp_f32_oeq(ptr addrspace(1) %out, float %src) {
178 ; GFX11-LABEL: v_fcmp_f32_oeq:
179 ; GFX11:       ; %bb.0:
180 ; GFX11-NEXT:    s_clause 0x1
181 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
182 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
183 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
184 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
185 ; GFX11-NEXT:    v_cmp_eq_f32_e64 s[2:3], 0x42c80000, s4
186 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
187 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
188 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
189 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
190 ; GFX11-NEXT:    s_nop 0
191 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
192 ; GFX11-NEXT:    s_endpgm
194 ; GFX9-LABEL: v_fcmp_f32_oeq:
195 ; GFX9:       ; %bb.0:
196 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
197 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
198 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
199 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
200 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
201 ; GFX9-NEXT:    v_cmp_eq_f32_e64 s[2:3], s4, v0
202 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
203 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
204 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
205 ; GFX9-NEXT:    s_endpgm
207 ; VI-SDAG-LABEL: v_fcmp_f32_oeq:
208 ; VI-SDAG:       ; %bb.0:
209 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
210 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
211 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
212 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
213 ; VI-SDAG-NEXT:    v_cmp_eq_f32_e64 s[2:3], s4, v0
214 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
215 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
216 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
217 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
218 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
219 ; VI-SDAG-NEXT:    s_endpgm
221 ; VI-GISEL-LABEL: v_fcmp_f32_oeq:
222 ; VI-GISEL:       ; %bb.0:
223 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
224 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
225 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
226 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
227 ; VI-GISEL-NEXT:    v_cmp_eq_f32_e64 s[2:3], s4, v0
228 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
229 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
230 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
231 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
232 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
233 ; VI-GISEL-NEXT:    s_endpgm
234   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 1)
235   store i64 %result, ptr addrspace(1) %out
236   ret void
239 define amdgpu_kernel void @v_fcmp_f32_one(ptr addrspace(1) %out, float %src) {
240 ; GFX11-LABEL: v_fcmp_f32_one:
241 ; GFX11:       ; %bb.0:
242 ; GFX11-NEXT:    s_clause 0x1
243 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
244 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
245 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
246 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
247 ; GFX11-NEXT:    v_cmp_neq_f32_e64 s[2:3], 0x42c80000, s4
248 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
249 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
250 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
251 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
252 ; GFX11-NEXT:    s_nop 0
253 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
254 ; GFX11-NEXT:    s_endpgm
256 ; GFX9-LABEL: v_fcmp_f32_one:
257 ; GFX9:       ; %bb.0:
258 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
259 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
260 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
261 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
262 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
263 ; GFX9-NEXT:    v_cmp_neq_f32_e64 s[2:3], s4, v0
264 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
265 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
266 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
267 ; GFX9-NEXT:    s_endpgm
269 ; VI-SDAG-LABEL: v_fcmp_f32_one:
270 ; VI-SDAG:       ; %bb.0:
271 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
272 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
273 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
274 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
275 ; VI-SDAG-NEXT:    v_cmp_neq_f32_e64 s[2:3], s4, v0
276 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
277 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
278 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
279 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
280 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
281 ; VI-SDAG-NEXT:    s_endpgm
283 ; VI-GISEL-LABEL: v_fcmp_f32_one:
284 ; VI-GISEL:       ; %bb.0:
285 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
286 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
287 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
288 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
289 ; VI-GISEL-NEXT:    v_cmp_neq_f32_e64 s[2:3], s4, v0
290 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
291 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
292 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
293 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
294 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
295 ; VI-GISEL-NEXT:    s_endpgm
296   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 6)
297   store i64 %result, ptr addrspace(1) %out
298   ret void
301 define amdgpu_kernel void @v_fcmp_f32_ogt(ptr addrspace(1) %out, float %src) {
302 ; GFX11-LABEL: v_fcmp_f32_ogt:
303 ; GFX11:       ; %bb.0:
304 ; GFX11-NEXT:    s_clause 0x1
305 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
306 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
307 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
308 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
309 ; GFX11-NEXT:    v_cmp_lt_f32_e64 s[2:3], 0x42c80000, s4
310 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
311 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
312 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
313 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
314 ; GFX11-NEXT:    s_nop 0
315 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
316 ; GFX11-NEXT:    s_endpgm
318 ; GFX9-LABEL: v_fcmp_f32_ogt:
319 ; GFX9:       ; %bb.0:
320 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
321 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
322 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
323 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
324 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
325 ; GFX9-NEXT:    v_cmp_gt_f32_e64 s[2:3], s4, v0
326 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
327 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
328 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
329 ; GFX9-NEXT:    s_endpgm
331 ; VI-SDAG-LABEL: v_fcmp_f32_ogt:
332 ; VI-SDAG:       ; %bb.0:
333 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
334 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
335 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
336 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
337 ; VI-SDAG-NEXT:    v_cmp_gt_f32_e64 s[2:3], s4, v0
338 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
339 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
340 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
341 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
342 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
343 ; VI-SDAG-NEXT:    s_endpgm
345 ; VI-GISEL-LABEL: v_fcmp_f32_ogt:
346 ; VI-GISEL:       ; %bb.0:
347 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
348 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
349 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
350 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
351 ; VI-GISEL-NEXT:    v_cmp_gt_f32_e64 s[2:3], s4, v0
352 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
353 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
354 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
355 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
356 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
357 ; VI-GISEL-NEXT:    s_endpgm
358   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 2)
359   store i64 %result, ptr addrspace(1) %out
360   ret void
363 define amdgpu_kernel void @v_fcmp_f32_oge(ptr addrspace(1) %out, float %src) {
364 ; GFX11-LABEL: v_fcmp_f32_oge:
365 ; GFX11:       ; %bb.0:
366 ; GFX11-NEXT:    s_clause 0x1
367 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
368 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
369 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
370 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
371 ; GFX11-NEXT:    v_cmp_le_f32_e64 s[2:3], 0x42c80000, s4
372 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
373 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
374 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
375 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
376 ; GFX11-NEXT:    s_nop 0
377 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
378 ; GFX11-NEXT:    s_endpgm
380 ; GFX9-LABEL: v_fcmp_f32_oge:
381 ; GFX9:       ; %bb.0:
382 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
383 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
384 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
385 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
386 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
387 ; GFX9-NEXT:    v_cmp_ge_f32_e64 s[2:3], s4, v0
388 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
389 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
390 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
391 ; GFX9-NEXT:    s_endpgm
393 ; VI-SDAG-LABEL: v_fcmp_f32_oge:
394 ; VI-SDAG:       ; %bb.0:
395 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
396 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
397 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
398 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
399 ; VI-SDAG-NEXT:    v_cmp_ge_f32_e64 s[2:3], s4, v0
400 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
401 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
402 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
403 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
404 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
405 ; VI-SDAG-NEXT:    s_endpgm
407 ; VI-GISEL-LABEL: v_fcmp_f32_oge:
408 ; VI-GISEL:       ; %bb.0:
409 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
410 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
411 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
412 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
413 ; VI-GISEL-NEXT:    v_cmp_ge_f32_e64 s[2:3], s4, v0
414 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
415 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
416 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
417 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
418 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
419 ; VI-GISEL-NEXT:    s_endpgm
420   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 3)
421   store i64 %result, ptr addrspace(1) %out
422   ret void
425 define amdgpu_kernel void @v_fcmp_f32_olt(ptr addrspace(1) %out, float %src) {
426 ; GFX11-LABEL: v_fcmp_f32_olt:
427 ; GFX11:       ; %bb.0:
428 ; GFX11-NEXT:    s_clause 0x1
429 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
430 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
431 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
432 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
433 ; GFX11-NEXT:    v_cmp_gt_f32_e64 s[2:3], 0x42c80000, s4
434 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
435 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
436 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
437 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
438 ; GFX11-NEXT:    s_nop 0
439 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
440 ; GFX11-NEXT:    s_endpgm
442 ; GFX9-LABEL: v_fcmp_f32_olt:
443 ; GFX9:       ; %bb.0:
444 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
445 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
446 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
447 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
448 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
449 ; GFX9-NEXT:    v_cmp_lt_f32_e64 s[2:3], s4, v0
450 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
451 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
452 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
453 ; GFX9-NEXT:    s_endpgm
455 ; VI-SDAG-LABEL: v_fcmp_f32_olt:
456 ; VI-SDAG:       ; %bb.0:
457 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
458 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
459 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
460 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
461 ; VI-SDAG-NEXT:    v_cmp_lt_f32_e64 s[2:3], s4, v0
462 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
463 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
464 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
465 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
466 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
467 ; VI-SDAG-NEXT:    s_endpgm
469 ; VI-GISEL-LABEL: v_fcmp_f32_olt:
470 ; VI-GISEL:       ; %bb.0:
471 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
472 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
473 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
474 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
475 ; VI-GISEL-NEXT:    v_cmp_lt_f32_e64 s[2:3], s4, v0
476 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
477 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
478 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
479 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
480 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
481 ; VI-GISEL-NEXT:    s_endpgm
482   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 4)
483   store i64 %result, ptr addrspace(1) %out
484   ret void
487 define amdgpu_kernel void @v_fcmp_f32_ole(ptr addrspace(1) %out, float %src) {
488 ; GFX11-LABEL: v_fcmp_f32_ole:
489 ; GFX11:       ; %bb.0:
490 ; GFX11-NEXT:    s_clause 0x1
491 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
492 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
493 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
494 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
495 ; GFX11-NEXT:    v_cmp_ge_f32_e64 s[2:3], 0x42c80000, s4
496 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
497 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
498 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
499 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
500 ; GFX11-NEXT:    s_nop 0
501 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
502 ; GFX11-NEXT:    s_endpgm
504 ; GFX9-LABEL: v_fcmp_f32_ole:
505 ; GFX9:       ; %bb.0:
506 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
507 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
508 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
509 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
510 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
511 ; GFX9-NEXT:    v_cmp_le_f32_e64 s[2:3], s4, v0
512 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
513 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
514 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
515 ; GFX9-NEXT:    s_endpgm
517 ; VI-SDAG-LABEL: v_fcmp_f32_ole:
518 ; VI-SDAG:       ; %bb.0:
519 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
520 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
521 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
522 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
523 ; VI-SDAG-NEXT:    v_cmp_le_f32_e64 s[2:3], s4, v0
524 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
525 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
526 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
527 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
528 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
529 ; VI-SDAG-NEXT:    s_endpgm
531 ; VI-GISEL-LABEL: v_fcmp_f32_ole:
532 ; VI-GISEL:       ; %bb.0:
533 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
534 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
535 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
536 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
537 ; VI-GISEL-NEXT:    v_cmp_le_f32_e64 s[2:3], s4, v0
538 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
539 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
540 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
541 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
542 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
543 ; VI-GISEL-NEXT:    s_endpgm
544   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 5)
545   store i64 %result, ptr addrspace(1) %out
546   ret void
549 define amdgpu_kernel void @v_fcmp_f32_o(ptr addrspace(1) %out, float %src) {
550 ; GFX11-LABEL: v_fcmp_f32_o:
551 ; GFX11:       ; %bb.0:
552 ; GFX11-NEXT:    s_clause 0x1
553 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
554 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
555 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
556 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
557 ; GFX11-NEXT:    v_cmp_o_f32_e64 s[2:3], 0x42c80000, s4
558 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
559 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
560 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
561 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
562 ; GFX11-NEXT:    s_nop 0
563 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
564 ; GFX11-NEXT:    s_endpgm
566 ; GFX9-LABEL: v_fcmp_f32_o:
567 ; GFX9:       ; %bb.0:
568 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
569 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
570 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
571 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
572 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
573 ; GFX9-NEXT:    v_cmp_o_f32_e64 s[2:3], s4, v0
574 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
575 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
576 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
577 ; GFX9-NEXT:    s_endpgm
579 ; VI-SDAG-LABEL: v_fcmp_f32_o:
580 ; VI-SDAG:       ; %bb.0:
581 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
582 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
583 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
584 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
585 ; VI-SDAG-NEXT:    v_cmp_o_f32_e64 s[2:3], s4, v0
586 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
587 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
588 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
589 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
590 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
591 ; VI-SDAG-NEXT:    s_endpgm
593 ; VI-GISEL-LABEL: v_fcmp_f32_o:
594 ; VI-GISEL:       ; %bb.0:
595 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
596 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
597 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
598 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
599 ; VI-GISEL-NEXT:    v_cmp_o_f32_e64 s[2:3], s4, v0
600 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
601 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
602 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
603 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
604 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
605 ; VI-GISEL-NEXT:    s_endpgm
606   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 7)
607   store i64 %result, ptr addrspace(1) %out
608   ret void
611 define amdgpu_kernel void @v_fcmp_f32_uo(ptr addrspace(1) %out, float %src) {
612 ; GFX11-LABEL: v_fcmp_f32_uo:
613 ; GFX11:       ; %bb.0:
614 ; GFX11-NEXT:    s_clause 0x1
615 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
616 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
617 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
618 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
619 ; GFX11-NEXT:    v_cmp_u_f32_e64 s[2:3], 0x42c80000, s4
620 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
621 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
622 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
623 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
624 ; GFX11-NEXT:    s_nop 0
625 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
626 ; GFX11-NEXT:    s_endpgm
628 ; GFX9-LABEL: v_fcmp_f32_uo:
629 ; GFX9:       ; %bb.0:
630 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
631 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
632 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
633 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
634 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
635 ; GFX9-NEXT:    v_cmp_u_f32_e64 s[2:3], s4, v0
636 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
637 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
638 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
639 ; GFX9-NEXT:    s_endpgm
641 ; VI-SDAG-LABEL: v_fcmp_f32_uo:
642 ; VI-SDAG:       ; %bb.0:
643 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
644 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
645 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
646 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
647 ; VI-SDAG-NEXT:    v_cmp_u_f32_e64 s[2:3], s4, v0
648 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
649 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
650 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
651 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
652 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
653 ; VI-SDAG-NEXT:    s_endpgm
655 ; VI-GISEL-LABEL: v_fcmp_f32_uo:
656 ; VI-GISEL:       ; %bb.0:
657 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
658 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
659 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
660 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
661 ; VI-GISEL-NEXT:    v_cmp_u_f32_e64 s[2:3], s4, v0
662 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
663 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
664 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
665 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
666 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
667 ; VI-GISEL-NEXT:    s_endpgm
668   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 8)
669   store i64 %result, ptr addrspace(1) %out
670   ret void
673 define amdgpu_kernel void @v_fcmp_f32_ueq(ptr addrspace(1) %out, float %src) {
674 ; GFX11-LABEL: v_fcmp_f32_ueq:
675 ; GFX11:       ; %bb.0:
676 ; GFX11-NEXT:    s_clause 0x1
677 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
678 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
679 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
680 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
681 ; GFX11-NEXT:    v_cmp_nlg_f32_e64 s[2:3], 0x42c80000, s4
682 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
683 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
684 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
685 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
686 ; GFX11-NEXT:    s_nop 0
687 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
688 ; GFX11-NEXT:    s_endpgm
690 ; GFX9-LABEL: v_fcmp_f32_ueq:
691 ; GFX9:       ; %bb.0:
692 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
693 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
694 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
695 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
696 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
697 ; GFX9-NEXT:    v_cmp_nlg_f32_e64 s[2:3], s4, v0
698 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
699 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
700 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
701 ; GFX9-NEXT:    s_endpgm
703 ; VI-SDAG-LABEL: v_fcmp_f32_ueq:
704 ; VI-SDAG:       ; %bb.0:
705 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
706 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
707 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
708 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
709 ; VI-SDAG-NEXT:    v_cmp_nlg_f32_e64 s[2:3], s4, v0
710 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
711 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
712 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
713 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
714 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
715 ; VI-SDAG-NEXT:    s_endpgm
717 ; VI-GISEL-LABEL: v_fcmp_f32_ueq:
718 ; VI-GISEL:       ; %bb.0:
719 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
720 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
721 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
722 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
723 ; VI-GISEL-NEXT:    v_cmp_nlg_f32_e64 s[2:3], s4, v0
724 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
725 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
726 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
727 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
728 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
729 ; VI-GISEL-NEXT:    s_endpgm
730   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 9)
731   store i64 %result, ptr addrspace(1) %out
732   ret void
735 define amdgpu_kernel void @v_fcmp_f32_une(ptr addrspace(1) %out, float %src) {
736 ; GFX11-LABEL: v_fcmp_f32_une:
737 ; GFX11:       ; %bb.0:
738 ; GFX11-NEXT:    s_clause 0x1
739 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
740 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
741 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
742 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
743 ; GFX11-NEXT:    v_cmp_neq_f32_e64 s[2:3], 0x42c80000, s4
744 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
745 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
746 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
747 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
748 ; GFX11-NEXT:    s_nop 0
749 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
750 ; GFX11-NEXT:    s_endpgm
752 ; GFX9-LABEL: v_fcmp_f32_une:
753 ; GFX9:       ; %bb.0:
754 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
755 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
756 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
757 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
758 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
759 ; GFX9-NEXT:    v_cmp_neq_f32_e64 s[2:3], s4, v0
760 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
761 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
762 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
763 ; GFX9-NEXT:    s_endpgm
765 ; VI-SDAG-LABEL: v_fcmp_f32_une:
766 ; VI-SDAG:       ; %bb.0:
767 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
768 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
769 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
770 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
771 ; VI-SDAG-NEXT:    v_cmp_neq_f32_e64 s[2:3], s4, v0
772 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
773 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
774 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
775 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
776 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
777 ; VI-SDAG-NEXT:    s_endpgm
779 ; VI-GISEL-LABEL: v_fcmp_f32_une:
780 ; VI-GISEL:       ; %bb.0:
781 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
782 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
783 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
784 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
785 ; VI-GISEL-NEXT:    v_cmp_neq_f32_e64 s[2:3], s4, v0
786 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
787 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
788 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
789 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
790 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
791 ; VI-GISEL-NEXT:    s_endpgm
792   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 14)
793   store i64 %result, ptr addrspace(1) %out
794   ret void
797 define amdgpu_kernel void @v_fcmp_f32_ugt(ptr addrspace(1) %out, float %src) {
798 ; GFX11-LABEL: v_fcmp_f32_ugt:
799 ; GFX11:       ; %bb.0:
800 ; GFX11-NEXT:    s_clause 0x1
801 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
802 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
803 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
804 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
805 ; GFX11-NEXT:    v_cmp_nge_f32_e64 s[2:3], 0x42c80000, s4
806 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
807 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
808 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
809 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
810 ; GFX11-NEXT:    s_nop 0
811 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
812 ; GFX11-NEXT:    s_endpgm
814 ; GFX9-LABEL: v_fcmp_f32_ugt:
815 ; GFX9:       ; %bb.0:
816 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
817 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
818 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
819 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
820 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
821 ; GFX9-NEXT:    v_cmp_nle_f32_e64 s[2:3], s4, v0
822 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
823 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
824 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
825 ; GFX9-NEXT:    s_endpgm
827 ; VI-SDAG-LABEL: v_fcmp_f32_ugt:
828 ; VI-SDAG:       ; %bb.0:
829 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
830 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
831 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
832 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
833 ; VI-SDAG-NEXT:    v_cmp_nle_f32_e64 s[2:3], s4, v0
834 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
835 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
836 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
837 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
838 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
839 ; VI-SDAG-NEXT:    s_endpgm
841 ; VI-GISEL-LABEL: v_fcmp_f32_ugt:
842 ; VI-GISEL:       ; %bb.0:
843 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
844 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
845 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
846 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
847 ; VI-GISEL-NEXT:    v_cmp_nle_f32_e64 s[2:3], s4, v0
848 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
849 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
850 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
851 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
852 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
853 ; VI-GISEL-NEXT:    s_endpgm
854   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 10)
855   store i64 %result, ptr addrspace(1) %out
856   ret void
859 define amdgpu_kernel void @v_fcmp_f32_uge(ptr addrspace(1) %out, float %src) {
860 ; GFX11-LABEL: v_fcmp_f32_uge:
861 ; GFX11:       ; %bb.0:
862 ; GFX11-NEXT:    s_clause 0x1
863 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
864 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
865 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
866 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
867 ; GFX11-NEXT:    v_cmp_ngt_f32_e64 s[2:3], 0x42c80000, s4
868 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
869 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
870 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
871 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
872 ; GFX11-NEXT:    s_nop 0
873 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
874 ; GFX11-NEXT:    s_endpgm
876 ; GFX9-LABEL: v_fcmp_f32_uge:
877 ; GFX9:       ; %bb.0:
878 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
879 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
880 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
881 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
882 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
883 ; GFX9-NEXT:    v_cmp_nlt_f32_e64 s[2:3], s4, v0
884 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
885 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
886 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
887 ; GFX9-NEXT:    s_endpgm
889 ; VI-SDAG-LABEL: v_fcmp_f32_uge:
890 ; VI-SDAG:       ; %bb.0:
891 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
892 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
893 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
894 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
895 ; VI-SDAG-NEXT:    v_cmp_nlt_f32_e64 s[2:3], s4, v0
896 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
897 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
898 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
899 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
900 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
901 ; VI-SDAG-NEXT:    s_endpgm
903 ; VI-GISEL-LABEL: v_fcmp_f32_uge:
904 ; VI-GISEL:       ; %bb.0:
905 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
906 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
907 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
908 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
909 ; VI-GISEL-NEXT:    v_cmp_nlt_f32_e64 s[2:3], s4, v0
910 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
911 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
912 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
913 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
914 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
915 ; VI-GISEL-NEXT:    s_endpgm
916   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 11)
917   store i64 %result, ptr addrspace(1) %out
918   ret void
921 define amdgpu_kernel void @v_fcmp_f32_ult(ptr addrspace(1) %out, float %src) {
922 ; GFX11-LABEL: v_fcmp_f32_ult:
923 ; GFX11:       ; %bb.0:
924 ; GFX11-NEXT:    s_clause 0x1
925 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
926 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
927 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
928 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
929 ; GFX11-NEXT:    v_cmp_nle_f32_e64 s[2:3], 0x42c80000, s4
930 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
931 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
932 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
933 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
934 ; GFX11-NEXT:    s_nop 0
935 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
936 ; GFX11-NEXT:    s_endpgm
938 ; GFX9-LABEL: v_fcmp_f32_ult:
939 ; GFX9:       ; %bb.0:
940 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
941 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
942 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
943 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
944 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
945 ; GFX9-NEXT:    v_cmp_nge_f32_e64 s[2:3], s4, v0
946 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
947 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
948 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
949 ; GFX9-NEXT:    s_endpgm
951 ; VI-SDAG-LABEL: v_fcmp_f32_ult:
952 ; VI-SDAG:       ; %bb.0:
953 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
954 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
955 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
956 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
957 ; VI-SDAG-NEXT:    v_cmp_nge_f32_e64 s[2:3], s4, v0
958 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
959 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
960 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
961 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
962 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
963 ; VI-SDAG-NEXT:    s_endpgm
965 ; VI-GISEL-LABEL: v_fcmp_f32_ult:
966 ; VI-GISEL:       ; %bb.0:
967 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
968 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
969 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
970 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
971 ; VI-GISEL-NEXT:    v_cmp_nge_f32_e64 s[2:3], s4, v0
972 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
973 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
974 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
975 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
976 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
977 ; VI-GISEL-NEXT:    s_endpgm
978   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 12)
979   store i64 %result, ptr addrspace(1) %out
980   ret void
983 define amdgpu_kernel void @v_fcmp_f32_ule(ptr addrspace(1) %out, float %src) {
984 ; GFX11-LABEL: v_fcmp_f32_ule:
985 ; GFX11:       ; %bb.0:
986 ; GFX11-NEXT:    s_clause 0x1
987 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
988 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
989 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
990 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
991 ; GFX11-NEXT:    v_cmp_nlt_f32_e64 s[2:3], 0x42c80000, s4
992 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
993 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
994 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
995 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
996 ; GFX11-NEXT:    s_nop 0
997 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
998 ; GFX11-NEXT:    s_endpgm
1000 ; GFX9-LABEL: v_fcmp_f32_ule:
1001 ; GFX9:       ; %bb.0:
1002 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
1003 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1004 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x42c80000
1005 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1006 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1007 ; GFX9-NEXT:    v_cmp_ngt_f32_e64 s[2:3], s4, v0
1008 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
1009 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
1010 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
1011 ; GFX9-NEXT:    s_endpgm
1013 ; VI-SDAG-LABEL: v_fcmp_f32_ule:
1014 ; VI-SDAG:       ; %bb.0:
1015 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
1016 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1017 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x42c80000
1018 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1019 ; VI-SDAG-NEXT:    v_cmp_ngt_f32_e64 s[2:3], s4, v0
1020 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1021 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1022 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1023 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1024 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1025 ; VI-SDAG-NEXT:    s_endpgm
1027 ; VI-GISEL-LABEL: v_fcmp_f32_ule:
1028 ; VI-GISEL:       ; %bb.0:
1029 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
1030 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1031 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x42c80000
1032 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1033 ; VI-GISEL-NEXT:    v_cmp_ngt_f32_e64 s[2:3], s4, v0
1034 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1035 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1036 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1037 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1038 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1039 ; VI-GISEL-NEXT:    s_endpgm
1040   %result = call i64 @llvm.amdgcn.fcmp.f32(float %src, float 100.00, i32 13)
1041   store i64 %result, ptr addrspace(1) %out
1042   ret void
1045 define amdgpu_kernel void @v_fcmp_f64_oeq(ptr addrspace(1) %out, double %src) {
1046 ; GFX11-LABEL: v_fcmp_f64_oeq:
1047 ; GFX11:       ; %bb.0:
1048 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1049 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1050 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1051 ; GFX11-NEXT:    v_cmp_eq_f64_e64 s[2:3], 0x40590000, s[2:3]
1052 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1053 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1054 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1055 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1056 ; GFX11-NEXT:    s_nop 0
1057 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1058 ; GFX11-NEXT:    s_endpgm
1060 ; GFX9-LABEL: v_fcmp_f64_oeq:
1061 ; GFX9:       ; %bb.0:
1062 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1063 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1064 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1065 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1066 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1067 ; GFX9-NEXT:    v_cmp_eq_f64_e64 s[0:1], s[6:7], v[0:1]
1068 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1069 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1070 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1071 ; GFX9-NEXT:    s_endpgm
1073 ; VI-SDAG-LABEL: v_fcmp_f64_oeq:
1074 ; VI-SDAG:       ; %bb.0:
1075 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1076 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1077 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1078 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1079 ; VI-SDAG-NEXT:    v_cmp_eq_f64_e64 s[2:3], s[2:3], v[0:1]
1080 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1081 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1082 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1083 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1084 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1085 ; VI-SDAG-NEXT:    s_endpgm
1087 ; VI-GISEL-LABEL: v_fcmp_f64_oeq:
1088 ; VI-GISEL:       ; %bb.0:
1089 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1090 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1091 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1092 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1093 ; VI-GISEL-NEXT:    v_cmp_eq_f64_e64 s[2:3], s[2:3], v[0:1]
1094 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1095 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1096 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1097 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1098 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1099 ; VI-GISEL-NEXT:    s_endpgm
1100   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 1)
1101   store i64 %result, ptr addrspace(1) %out
1102   ret void
1105 define amdgpu_kernel void @v_fcmp_f64_one(ptr addrspace(1) %out, double %src) {
1106 ; GFX11-LABEL: v_fcmp_f64_one:
1107 ; GFX11:       ; %bb.0:
1108 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1109 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1110 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1111 ; GFX11-NEXT:    v_cmp_neq_f64_e64 s[2:3], 0x40590000, s[2:3]
1112 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1113 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1114 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1115 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1116 ; GFX11-NEXT:    s_nop 0
1117 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1118 ; GFX11-NEXT:    s_endpgm
1120 ; GFX9-LABEL: v_fcmp_f64_one:
1121 ; GFX9:       ; %bb.0:
1122 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1123 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1124 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1125 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1126 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1127 ; GFX9-NEXT:    v_cmp_neq_f64_e64 s[0:1], s[6:7], v[0:1]
1128 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1129 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1130 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1131 ; GFX9-NEXT:    s_endpgm
1133 ; VI-SDAG-LABEL: v_fcmp_f64_one:
1134 ; VI-SDAG:       ; %bb.0:
1135 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1136 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1137 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1138 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1139 ; VI-SDAG-NEXT:    v_cmp_neq_f64_e64 s[2:3], s[2:3], v[0:1]
1140 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1141 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1142 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1143 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1144 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1145 ; VI-SDAG-NEXT:    s_endpgm
1147 ; VI-GISEL-LABEL: v_fcmp_f64_one:
1148 ; VI-GISEL:       ; %bb.0:
1149 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1150 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1151 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1152 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1153 ; VI-GISEL-NEXT:    v_cmp_neq_f64_e64 s[2:3], s[2:3], v[0:1]
1154 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1155 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1156 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1157 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1158 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1159 ; VI-GISEL-NEXT:    s_endpgm
1160   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 6)
1161   store i64 %result, ptr addrspace(1) %out
1162   ret void
1165 define amdgpu_kernel void @v_fcmp_f64_ogt(ptr addrspace(1) %out, double %src) {
1166 ; GFX11-LABEL: v_fcmp_f64_ogt:
1167 ; GFX11:       ; %bb.0:
1168 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1169 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1170 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1171 ; GFX11-NEXT:    v_cmp_lt_f64_e64 s[2:3], 0x40590000, s[2:3]
1172 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1173 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1174 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1175 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1176 ; GFX11-NEXT:    s_nop 0
1177 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1178 ; GFX11-NEXT:    s_endpgm
1180 ; GFX9-LABEL: v_fcmp_f64_ogt:
1181 ; GFX9:       ; %bb.0:
1182 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1183 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1184 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1185 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1186 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1187 ; GFX9-NEXT:    v_cmp_gt_f64_e64 s[0:1], s[6:7], v[0:1]
1188 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1189 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1190 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1191 ; GFX9-NEXT:    s_endpgm
1193 ; VI-SDAG-LABEL: v_fcmp_f64_ogt:
1194 ; VI-SDAG:       ; %bb.0:
1195 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1196 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1197 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1198 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1199 ; VI-SDAG-NEXT:    v_cmp_gt_f64_e64 s[2:3], s[2:3], v[0:1]
1200 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1201 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1202 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1203 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1204 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1205 ; VI-SDAG-NEXT:    s_endpgm
1207 ; VI-GISEL-LABEL: v_fcmp_f64_ogt:
1208 ; VI-GISEL:       ; %bb.0:
1209 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1210 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1211 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1212 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1213 ; VI-GISEL-NEXT:    v_cmp_gt_f64_e64 s[2:3], s[2:3], v[0:1]
1214 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1215 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1216 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1217 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1218 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1219 ; VI-GISEL-NEXT:    s_endpgm
1220   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 2)
1221   store i64 %result, ptr addrspace(1) %out
1222   ret void
1225 define amdgpu_kernel void @v_fcmp_f64_oge(ptr addrspace(1) %out, double %src) {
1226 ; GFX11-LABEL: v_fcmp_f64_oge:
1227 ; GFX11:       ; %bb.0:
1228 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1229 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1230 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1231 ; GFX11-NEXT:    v_cmp_le_f64_e64 s[2:3], 0x40590000, s[2:3]
1232 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1233 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1234 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1235 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1236 ; GFX11-NEXT:    s_nop 0
1237 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1238 ; GFX11-NEXT:    s_endpgm
1240 ; GFX9-LABEL: v_fcmp_f64_oge:
1241 ; GFX9:       ; %bb.0:
1242 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1243 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1244 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1245 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1246 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1247 ; GFX9-NEXT:    v_cmp_ge_f64_e64 s[0:1], s[6:7], v[0:1]
1248 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1249 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1250 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1251 ; GFX9-NEXT:    s_endpgm
1253 ; VI-SDAG-LABEL: v_fcmp_f64_oge:
1254 ; VI-SDAG:       ; %bb.0:
1255 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1256 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1257 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1258 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1259 ; VI-SDAG-NEXT:    v_cmp_ge_f64_e64 s[2:3], s[2:3], v[0:1]
1260 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1261 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1262 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1263 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1264 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1265 ; VI-SDAG-NEXT:    s_endpgm
1267 ; VI-GISEL-LABEL: v_fcmp_f64_oge:
1268 ; VI-GISEL:       ; %bb.0:
1269 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1270 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1271 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1272 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1273 ; VI-GISEL-NEXT:    v_cmp_ge_f64_e64 s[2:3], s[2:3], v[0:1]
1274 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1275 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1276 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1277 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1278 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1279 ; VI-GISEL-NEXT:    s_endpgm
1280   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 3)
1281   store i64 %result, ptr addrspace(1) %out
1282   ret void
1285 define amdgpu_kernel void @v_fcmp_f64_olt(ptr addrspace(1) %out, double %src) {
1286 ; GFX11-LABEL: v_fcmp_f64_olt:
1287 ; GFX11:       ; %bb.0:
1288 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1289 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1290 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1291 ; GFX11-NEXT:    v_cmp_gt_f64_e64 s[2:3], 0x40590000, s[2:3]
1292 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1293 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1294 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1295 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1296 ; GFX11-NEXT:    s_nop 0
1297 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1298 ; GFX11-NEXT:    s_endpgm
1300 ; GFX9-LABEL: v_fcmp_f64_olt:
1301 ; GFX9:       ; %bb.0:
1302 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1303 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1304 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1305 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1306 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1307 ; GFX9-NEXT:    v_cmp_lt_f64_e64 s[0:1], s[6:7], v[0:1]
1308 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1309 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1310 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1311 ; GFX9-NEXT:    s_endpgm
1313 ; VI-SDAG-LABEL: v_fcmp_f64_olt:
1314 ; VI-SDAG:       ; %bb.0:
1315 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1316 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1317 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1318 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1319 ; VI-SDAG-NEXT:    v_cmp_lt_f64_e64 s[2:3], s[2:3], v[0:1]
1320 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1321 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1322 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1323 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1324 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1325 ; VI-SDAG-NEXT:    s_endpgm
1327 ; VI-GISEL-LABEL: v_fcmp_f64_olt:
1328 ; VI-GISEL:       ; %bb.0:
1329 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1330 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1331 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1332 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1333 ; VI-GISEL-NEXT:    v_cmp_lt_f64_e64 s[2:3], s[2:3], v[0:1]
1334 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1335 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1336 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1337 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1338 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1339 ; VI-GISEL-NEXT:    s_endpgm
1340   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 4)
1341   store i64 %result, ptr addrspace(1) %out
1342   ret void
1345 define amdgpu_kernel void @v_fcmp_f64_ole(ptr addrspace(1) %out, double %src) {
1346 ; GFX11-LABEL: v_fcmp_f64_ole:
1347 ; GFX11:       ; %bb.0:
1348 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1349 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1350 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1351 ; GFX11-NEXT:    v_cmp_ge_f64_e64 s[2:3], 0x40590000, s[2:3]
1352 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1353 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1354 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1355 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1356 ; GFX11-NEXT:    s_nop 0
1357 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1358 ; GFX11-NEXT:    s_endpgm
1360 ; GFX9-LABEL: v_fcmp_f64_ole:
1361 ; GFX9:       ; %bb.0:
1362 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1363 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1364 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1365 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1366 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1367 ; GFX9-NEXT:    v_cmp_le_f64_e64 s[0:1], s[6:7], v[0:1]
1368 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1369 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1370 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1371 ; GFX9-NEXT:    s_endpgm
1373 ; VI-SDAG-LABEL: v_fcmp_f64_ole:
1374 ; VI-SDAG:       ; %bb.0:
1375 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1376 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1377 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1378 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1379 ; VI-SDAG-NEXT:    v_cmp_le_f64_e64 s[2:3], s[2:3], v[0:1]
1380 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1381 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1382 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1383 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1384 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1385 ; VI-SDAG-NEXT:    s_endpgm
1387 ; VI-GISEL-LABEL: v_fcmp_f64_ole:
1388 ; VI-GISEL:       ; %bb.0:
1389 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1390 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1391 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1392 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1393 ; VI-GISEL-NEXT:    v_cmp_le_f64_e64 s[2:3], s[2:3], v[0:1]
1394 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1395 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1396 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1397 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1398 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1399 ; VI-GISEL-NEXT:    s_endpgm
1400   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 5)
1401   store i64 %result, ptr addrspace(1) %out
1402   ret void
1405 define amdgpu_kernel void @v_fcmp_f64_ueq(ptr addrspace(1) %out, double %src) {
1406 ; GFX11-LABEL: v_fcmp_f64_ueq:
1407 ; GFX11:       ; %bb.0:
1408 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1409 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1410 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1411 ; GFX11-NEXT:    v_cmp_nlg_f64_e64 s[2:3], 0x40590000, s[2:3]
1412 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1413 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1414 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1415 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1416 ; GFX11-NEXT:    s_nop 0
1417 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1418 ; GFX11-NEXT:    s_endpgm
1420 ; GFX9-LABEL: v_fcmp_f64_ueq:
1421 ; GFX9:       ; %bb.0:
1422 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1423 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1424 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1425 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1426 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1427 ; GFX9-NEXT:    v_cmp_nlg_f64_e64 s[0:1], s[6:7], v[0:1]
1428 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1429 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1430 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1431 ; GFX9-NEXT:    s_endpgm
1433 ; VI-SDAG-LABEL: v_fcmp_f64_ueq:
1434 ; VI-SDAG:       ; %bb.0:
1435 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1436 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1437 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1438 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1439 ; VI-SDAG-NEXT:    v_cmp_nlg_f64_e64 s[2:3], s[2:3], v[0:1]
1440 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1441 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1442 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1443 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1444 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1445 ; VI-SDAG-NEXT:    s_endpgm
1447 ; VI-GISEL-LABEL: v_fcmp_f64_ueq:
1448 ; VI-GISEL:       ; %bb.0:
1449 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1450 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1451 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1452 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1453 ; VI-GISEL-NEXT:    v_cmp_nlg_f64_e64 s[2:3], s[2:3], v[0:1]
1454 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1455 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1456 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1457 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1458 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1459 ; VI-GISEL-NEXT:    s_endpgm
1460   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 9)
1461   store i64 %result, ptr addrspace(1) %out
1462   ret void
1465 define amdgpu_kernel void @v_fcmp_f64_o(ptr addrspace(1) %out, double %src) {
1466 ; GFX11-LABEL: v_fcmp_f64_o:
1467 ; GFX11:       ; %bb.0:
1468 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1469 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1470 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1471 ; GFX11-NEXT:    v_cmp_o_f64_e64 s[2:3], 0x40590000, s[2:3]
1472 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1473 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1474 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1475 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1476 ; GFX11-NEXT:    s_nop 0
1477 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1478 ; GFX11-NEXT:    s_endpgm
1480 ; GFX9-LABEL: v_fcmp_f64_o:
1481 ; GFX9:       ; %bb.0:
1482 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1483 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1484 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1485 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1486 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1487 ; GFX9-NEXT:    v_cmp_o_f64_e64 s[0:1], s[6:7], v[0:1]
1488 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1489 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1490 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1491 ; GFX9-NEXT:    s_endpgm
1493 ; VI-SDAG-LABEL: v_fcmp_f64_o:
1494 ; VI-SDAG:       ; %bb.0:
1495 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1496 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1497 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1498 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1499 ; VI-SDAG-NEXT:    v_cmp_o_f64_e64 s[2:3], s[2:3], v[0:1]
1500 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1501 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1502 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1503 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1504 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1505 ; VI-SDAG-NEXT:    s_endpgm
1507 ; VI-GISEL-LABEL: v_fcmp_f64_o:
1508 ; VI-GISEL:       ; %bb.0:
1509 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1510 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1511 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1512 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1513 ; VI-GISEL-NEXT:    v_cmp_o_f64_e64 s[2:3], s[2:3], v[0:1]
1514 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1515 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1516 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1517 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1518 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1519 ; VI-GISEL-NEXT:    s_endpgm
1520   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 7)
1521   store i64 %result, ptr addrspace(1) %out
1522   ret void
1525 define amdgpu_kernel void @v_fcmp_f64_uo(ptr addrspace(1) %out, double %src) {
1526 ; GFX11-LABEL: v_fcmp_f64_uo:
1527 ; GFX11:       ; %bb.0:
1528 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1529 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1530 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1531 ; GFX11-NEXT:    v_cmp_u_f64_e64 s[2:3], 0x40590000, s[2:3]
1532 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1533 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1534 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1535 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1536 ; GFX11-NEXT:    s_nop 0
1537 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1538 ; GFX11-NEXT:    s_endpgm
1540 ; GFX9-LABEL: v_fcmp_f64_uo:
1541 ; GFX9:       ; %bb.0:
1542 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1543 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1544 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1545 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1546 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1547 ; GFX9-NEXT:    v_cmp_u_f64_e64 s[0:1], s[6:7], v[0:1]
1548 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1549 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1550 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1551 ; GFX9-NEXT:    s_endpgm
1553 ; VI-SDAG-LABEL: v_fcmp_f64_uo:
1554 ; VI-SDAG:       ; %bb.0:
1555 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1556 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1557 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1558 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1559 ; VI-SDAG-NEXT:    v_cmp_u_f64_e64 s[2:3], s[2:3], v[0:1]
1560 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1561 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1562 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1563 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1564 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1565 ; VI-SDAG-NEXT:    s_endpgm
1567 ; VI-GISEL-LABEL: v_fcmp_f64_uo:
1568 ; VI-GISEL:       ; %bb.0:
1569 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1570 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1571 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1572 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1573 ; VI-GISEL-NEXT:    v_cmp_u_f64_e64 s[2:3], s[2:3], v[0:1]
1574 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1575 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1576 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1577 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1578 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1579 ; VI-GISEL-NEXT:    s_endpgm
1580   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 8)
1581   store i64 %result, ptr addrspace(1) %out
1582   ret void
1585 define amdgpu_kernel void @v_fcmp_f64_une(ptr addrspace(1) %out, double %src) {
1586 ; GFX11-LABEL: v_fcmp_f64_une:
1587 ; GFX11:       ; %bb.0:
1588 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1589 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1590 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1591 ; GFX11-NEXT:    v_cmp_neq_f64_e64 s[2:3], 0x40590000, s[2:3]
1592 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1593 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1594 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1595 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1596 ; GFX11-NEXT:    s_nop 0
1597 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1598 ; GFX11-NEXT:    s_endpgm
1600 ; GFX9-LABEL: v_fcmp_f64_une:
1601 ; GFX9:       ; %bb.0:
1602 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1603 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1604 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1605 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1606 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1607 ; GFX9-NEXT:    v_cmp_neq_f64_e64 s[0:1], s[6:7], v[0:1]
1608 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1609 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1610 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1611 ; GFX9-NEXT:    s_endpgm
1613 ; VI-SDAG-LABEL: v_fcmp_f64_une:
1614 ; VI-SDAG:       ; %bb.0:
1615 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1616 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1617 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1618 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1619 ; VI-SDAG-NEXT:    v_cmp_neq_f64_e64 s[2:3], s[2:3], v[0:1]
1620 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1621 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1622 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1623 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1624 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1625 ; VI-SDAG-NEXT:    s_endpgm
1627 ; VI-GISEL-LABEL: v_fcmp_f64_une:
1628 ; VI-GISEL:       ; %bb.0:
1629 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1630 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1631 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1632 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1633 ; VI-GISEL-NEXT:    v_cmp_neq_f64_e64 s[2:3], s[2:3], v[0:1]
1634 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1635 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1636 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1637 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1638 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1639 ; VI-GISEL-NEXT:    s_endpgm
1640   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 14)
1641   store i64 %result, ptr addrspace(1) %out
1642   ret void
1645 define amdgpu_kernel void @v_fcmp_f64_ugt(ptr addrspace(1) %out, double %src) {
1646 ; GFX11-LABEL: v_fcmp_f64_ugt:
1647 ; GFX11:       ; %bb.0:
1648 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1649 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1650 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1651 ; GFX11-NEXT:    v_cmp_nge_f64_e64 s[2:3], 0x40590000, s[2:3]
1652 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1653 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1654 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1655 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1656 ; GFX11-NEXT:    s_nop 0
1657 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1658 ; GFX11-NEXT:    s_endpgm
1660 ; GFX9-LABEL: v_fcmp_f64_ugt:
1661 ; GFX9:       ; %bb.0:
1662 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1663 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1664 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1665 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1666 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1667 ; GFX9-NEXT:    v_cmp_nle_f64_e64 s[0:1], s[6:7], v[0:1]
1668 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1669 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1670 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1671 ; GFX9-NEXT:    s_endpgm
1673 ; VI-SDAG-LABEL: v_fcmp_f64_ugt:
1674 ; VI-SDAG:       ; %bb.0:
1675 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1676 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1677 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1678 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1679 ; VI-SDAG-NEXT:    v_cmp_nle_f64_e64 s[2:3], s[2:3], v[0:1]
1680 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1681 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1682 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1683 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1684 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1685 ; VI-SDAG-NEXT:    s_endpgm
1687 ; VI-GISEL-LABEL: v_fcmp_f64_ugt:
1688 ; VI-GISEL:       ; %bb.0:
1689 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1690 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1691 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1692 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1693 ; VI-GISEL-NEXT:    v_cmp_nle_f64_e64 s[2:3], s[2:3], v[0:1]
1694 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1695 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1696 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1697 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1698 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1699 ; VI-GISEL-NEXT:    s_endpgm
1700   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 10)
1701   store i64 %result, ptr addrspace(1) %out
1702   ret void
1705 define amdgpu_kernel void @v_fcmp_f64_uge(ptr addrspace(1) %out, double %src) {
1706 ; GFX11-LABEL: v_fcmp_f64_uge:
1707 ; GFX11:       ; %bb.0:
1708 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1709 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1710 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1711 ; GFX11-NEXT:    v_cmp_ngt_f64_e64 s[2:3], 0x40590000, s[2:3]
1712 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1713 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1714 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1715 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1716 ; GFX11-NEXT:    s_nop 0
1717 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1718 ; GFX11-NEXT:    s_endpgm
1720 ; GFX9-LABEL: v_fcmp_f64_uge:
1721 ; GFX9:       ; %bb.0:
1722 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1723 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1724 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1725 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1726 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1727 ; GFX9-NEXT:    v_cmp_nlt_f64_e64 s[0:1], s[6:7], v[0:1]
1728 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1729 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1730 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1731 ; GFX9-NEXT:    s_endpgm
1733 ; VI-SDAG-LABEL: v_fcmp_f64_uge:
1734 ; VI-SDAG:       ; %bb.0:
1735 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1736 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1737 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1738 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1739 ; VI-SDAG-NEXT:    v_cmp_nlt_f64_e64 s[2:3], s[2:3], v[0:1]
1740 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1741 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1742 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1743 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1744 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1745 ; VI-SDAG-NEXT:    s_endpgm
1747 ; VI-GISEL-LABEL: v_fcmp_f64_uge:
1748 ; VI-GISEL:       ; %bb.0:
1749 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1750 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1751 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1752 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1753 ; VI-GISEL-NEXT:    v_cmp_nlt_f64_e64 s[2:3], s[2:3], v[0:1]
1754 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1755 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1756 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1757 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1758 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1759 ; VI-GISEL-NEXT:    s_endpgm
1760   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 11)
1761   store i64 %result, ptr addrspace(1) %out
1762   ret void
1765 define amdgpu_kernel void @v_fcmp_f64_ult(ptr addrspace(1) %out, double %src) {
1766 ; GFX11-LABEL: v_fcmp_f64_ult:
1767 ; GFX11:       ; %bb.0:
1768 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1769 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1770 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1771 ; GFX11-NEXT:    v_cmp_nle_f64_e64 s[2:3], 0x40590000, s[2:3]
1772 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1773 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1774 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1775 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1776 ; GFX11-NEXT:    s_nop 0
1777 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1778 ; GFX11-NEXT:    s_endpgm
1780 ; GFX9-LABEL: v_fcmp_f64_ult:
1781 ; GFX9:       ; %bb.0:
1782 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1783 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1784 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1785 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1786 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1787 ; GFX9-NEXT:    v_cmp_nge_f64_e64 s[0:1], s[6:7], v[0:1]
1788 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1789 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1790 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1791 ; GFX9-NEXT:    s_endpgm
1793 ; VI-SDAG-LABEL: v_fcmp_f64_ult:
1794 ; VI-SDAG:       ; %bb.0:
1795 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1796 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1797 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1798 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1799 ; VI-SDAG-NEXT:    v_cmp_nge_f64_e64 s[2:3], s[2:3], v[0:1]
1800 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1801 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1802 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1803 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1804 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1805 ; VI-SDAG-NEXT:    s_endpgm
1807 ; VI-GISEL-LABEL: v_fcmp_f64_ult:
1808 ; VI-GISEL:       ; %bb.0:
1809 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1810 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1811 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1812 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1813 ; VI-GISEL-NEXT:    v_cmp_nge_f64_e64 s[2:3], s[2:3], v[0:1]
1814 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1815 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1816 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1817 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1818 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1819 ; VI-GISEL-NEXT:    s_endpgm
1820   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 12)
1821   store i64 %result, ptr addrspace(1) %out
1822   ret void
1825 define amdgpu_kernel void @v_fcmp_f64_ule(ptr addrspace(1) %out, double %src) {
1826 ; GFX11-LABEL: v_fcmp_f64_ule:
1827 ; GFX11:       ; %bb.0:
1828 ; GFX11-NEXT:    s_load_b128 s[0:3], s[2:3], 0x24
1829 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1830 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1831 ; GFX11-NEXT:    v_cmp_nlt_f64_e64 s[2:3], 0x40590000, s[2:3]
1832 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
1833 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1834 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1835 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1836 ; GFX11-NEXT:    s_nop 0
1837 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1838 ; GFX11-NEXT:    s_endpgm
1840 ; GFX9-LABEL: v_fcmp_f64_ule:
1841 ; GFX9:       ; %bb.0:
1842 ; GFX9-NEXT:    s_load_dwordx4 s[4:7], s[2:3], 0x24
1843 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0
1844 ; GFX9-NEXT:    v_mov_b32_e32 v1, 0x40590000
1845 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1846 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1847 ; GFX9-NEXT:    v_cmp_ngt_f64_e64 s[0:1], s[6:7], v[0:1]
1848 ; GFX9-NEXT:    v_mov_b32_e32 v0, s0
1849 ; GFX9-NEXT:    v_mov_b32_e32 v1, s1
1850 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[4:5]
1851 ; GFX9-NEXT:    s_endpgm
1853 ; VI-SDAG-LABEL: v_fcmp_f64_ule:
1854 ; VI-SDAG:       ; %bb.0:
1855 ; VI-SDAG-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1856 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0
1857 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, 0x40590000
1858 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1859 ; VI-SDAG-NEXT:    v_cmp_ngt_f64_e64 s[2:3], s[2:3], v[0:1]
1860 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1861 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1862 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1863 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1864 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1865 ; VI-SDAG-NEXT:    s_endpgm
1867 ; VI-GISEL-LABEL: v_fcmp_f64_ule:
1868 ; VI-GISEL:       ; %bb.0:
1869 ; VI-GISEL-NEXT:    s_load_dwordx4 s[0:3], s[2:3], 0x24
1870 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0
1871 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, 0x40590000
1872 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1873 ; VI-GISEL-NEXT:    v_cmp_ngt_f64_e64 s[2:3], s[2:3], v[0:1]
1874 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1875 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1876 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1877 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1878 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1879 ; VI-GISEL-NEXT:    s_endpgm
1880   %result = call i64 @llvm.amdgcn.fcmp.f64(double %src, double 100.00, i32 13)
1881   store i64 %result, ptr addrspace(1) %out
1882   ret void
1886 define amdgpu_kernel void @v_fcmp_f16_oeq_with_fabs(ptr addrspace(1) %out, half %src, half %a) {
1887 ; GFX11-LABEL: v_fcmp_f16_oeq_with_fabs:
1888 ; GFX11:       ; %bb.0:
1889 ; GFX11-NEXT:    s_clause 0x1
1890 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
1891 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
1892 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1893 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1894 ; GFX11-NEXT:    s_lshr_b32 s2, s4, 16
1895 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
1896 ; GFX11-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, |s2|
1897 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1898 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
1899 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1900 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1901 ; GFX11-NEXT:    s_nop 0
1902 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1903 ; GFX11-NEXT:    s_endpgm
1905 ; GFX9-LABEL: v_fcmp_f16_oeq_with_fabs:
1906 ; GFX9:       ; %bb.0:
1907 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
1908 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1909 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1910 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1911 ; GFX9-NEXT:    s_lshr_b32 s2, s4, 16
1912 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
1913 ; GFX9-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, |v0|
1914 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
1915 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
1916 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
1917 ; GFX9-NEXT:    s_endpgm
1919 ; VI-SDAG-LABEL: v_fcmp_f16_oeq_with_fabs:
1920 ; VI-SDAG:       ; %bb.0:
1921 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
1922 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1923 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1924 ; VI-SDAG-NEXT:    s_lshr_b32 s2, s4, 16
1925 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s2
1926 ; VI-SDAG-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, |v0|
1927 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1928 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1929 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1930 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
1931 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
1932 ; VI-SDAG-NEXT:    s_endpgm
1934 ; VI-GISEL-LABEL: v_fcmp_f16_oeq_with_fabs:
1935 ; VI-GISEL:       ; %bb.0:
1936 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
1937 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1938 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
1939 ; VI-GISEL-NEXT:    s_lshr_b32 s2, s4, 16
1940 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1941 ; VI-GISEL-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, |v0|
1942 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
1943 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
1944 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
1945 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
1946 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
1947 ; VI-GISEL-NEXT:    s_endpgm
1948   %temp = call half @llvm.fabs.f16(half %a)
1949   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half %temp, i32 1)
1950   store i64 %result, ptr addrspace(1) %out
1951   ret void
1955 define amdgpu_kernel void @v_fcmp_f16_oeq_both_operands_with_fabs(ptr addrspace(1) %out, half %src, half %a) {
1956 ; GFX11-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:
1957 ; GFX11:       ; %bb.0:
1958 ; GFX11-NEXT:    s_clause 0x1
1959 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
1960 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
1961 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
1962 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
1963 ; GFX11-NEXT:    s_lshr_b32 s2, s4, 16
1964 ; GFX11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_1)
1965 ; GFX11-NEXT:    v_cmp_eq_f16_e64 s[2:3], |s4|, |s2|
1966 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
1967 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2)
1968 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
1969 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
1970 ; GFX11-NEXT:    s_nop 0
1971 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
1972 ; GFX11-NEXT:    s_endpgm
1974 ; GFX9-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:
1975 ; GFX9:       ; %bb.0:
1976 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
1977 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1978 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
1979 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
1980 ; GFX9-NEXT:    s_lshr_b32 s2, s4, 16
1981 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
1982 ; GFX9-NEXT:    v_cmp_eq_f16_e64 s[2:3], |s4|, |v0|
1983 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
1984 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
1985 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
1986 ; GFX9-NEXT:    s_endpgm
1988 ; VI-SDAG-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:
1989 ; VI-SDAG:       ; %bb.0:
1990 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
1991 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
1992 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
1993 ; VI-SDAG-NEXT:    s_lshr_b32 s2, s4, 16
1994 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s2
1995 ; VI-SDAG-NEXT:    v_cmp_eq_f16_e64 s[2:3], |s4|, |v0|
1996 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
1997 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
1998 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
1999 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2000 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2001 ; VI-SDAG-NEXT:    s_endpgm
2003 ; VI-GISEL-LABEL: v_fcmp_f16_oeq_both_operands_with_fabs:
2004 ; VI-GISEL:       ; %bb.0:
2005 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2006 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2007 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2008 ; VI-GISEL-NEXT:    s_lshr_b32 s2, s4, 16
2009 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2010 ; VI-GISEL-NEXT:    v_cmp_eq_f16_e64 s[2:3], |s4|, |v0|
2011 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2012 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2013 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2014 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2015 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2016 ; VI-GISEL-NEXT:    s_endpgm
2017   %temp = call half @llvm.fabs.f16(half %a)
2018   %src_input = call half @llvm.fabs.f16(half %src)
2019   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src_input, half %temp, i32 1)
2020   store i64 %result, ptr addrspace(1) %out
2021   ret void
2024 define amdgpu_kernel void @v_fcmp_f16(ptr addrspace(1) %out, half %src) {
2025 ; GFX11-SDAG-LABEL: v_fcmp_f16:
2026 ; GFX11-SDAG:       ; %bb.0:
2027 ; GFX11-SDAG-NEXT:    s_endpgm
2029 ; GFX11-GISEL-LABEL: v_fcmp_f16:
2030 ; GFX11-GISEL:       ; %bb.0:
2031 ; GFX11-GISEL-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2032 ; GFX11-GISEL-NEXT:    v_mov_b32_e32 v0, 0
2033 ; GFX11-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2034 ; GFX11-GISEL-NEXT:    global_store_b64 v0, v[0:1], s[0:1]
2035 ; GFX11-GISEL-NEXT:    s_nop 0
2036 ; GFX11-GISEL-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2037 ; GFX11-GISEL-NEXT:    s_endpgm
2039 ; GFX9-SDAG-LABEL: v_fcmp_f16:
2040 ; GFX9-SDAG:       ; %bb.0:
2041 ; GFX9-SDAG-NEXT:    s_endpgm
2043 ; GFX9-GISEL-LABEL: v_fcmp_f16:
2044 ; GFX9-GISEL:       ; %bb.0:
2045 ; GFX9-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2046 ; GFX9-GISEL-NEXT:    v_mov_b32_e32 v0, 0
2047 ; GFX9-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2048 ; GFX9-GISEL-NEXT:    global_store_dwordx2 v0, v[0:1], s[0:1]
2049 ; GFX9-GISEL-NEXT:    s_endpgm
2051 ; VI-SDAG-LABEL: v_fcmp_f16:
2052 ; VI-SDAG:       ; %bb.0:
2053 ; VI-SDAG-NEXT:    s_endpgm
2055 ; VI-GISEL-LABEL: v_fcmp_f16:
2056 ; VI-GISEL:       ; %bb.0:
2057 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2058 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2059 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s0
2060 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s1
2061 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[0:1], v[0:1]
2062 ; VI-GISEL-NEXT:    s_endpgm
2063   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 -1)
2064   store i64 %result, ptr addrspace(1) %out
2065   ret void
2069 define amdgpu_kernel void @v_fcmp_f16_oeq(ptr addrspace(1) %out, half %src) {
2070 ; GFX11-LABEL: v_fcmp_f16_oeq:
2071 ; GFX11:       ; %bb.0:
2072 ; GFX11-NEXT:    s_clause 0x1
2073 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2074 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2075 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2076 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2077 ; GFX11-NEXT:    v_cmp_eq_f16_e64 s[2:3], 0x5640, s4
2078 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2079 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2080 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2081 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2082 ; GFX11-NEXT:    s_nop 0
2083 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2084 ; GFX11-NEXT:    s_endpgm
2086 ; GFX9-LABEL: v_fcmp_f16_oeq:
2087 ; GFX9:       ; %bb.0:
2088 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2089 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2090 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2091 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2092 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2093 ; GFX9-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, v0
2094 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2095 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2096 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2097 ; GFX9-NEXT:    s_endpgm
2099 ; VI-SDAG-LABEL: v_fcmp_f16_oeq:
2100 ; VI-SDAG:       ; %bb.0:
2101 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2102 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2103 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2104 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2105 ; VI-SDAG-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, v0
2106 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2107 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2108 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2109 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2110 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2111 ; VI-SDAG-NEXT:    s_endpgm
2113 ; VI-GISEL-LABEL: v_fcmp_f16_oeq:
2114 ; VI-GISEL:       ; %bb.0:
2115 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2116 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2117 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2118 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2119 ; VI-GISEL-NEXT:    v_cmp_eq_f16_e64 s[2:3], s4, v0
2120 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2121 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2122 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2123 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2124 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2125 ; VI-GISEL-NEXT:    s_endpgm
2126   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 1)
2127   store i64 %result, ptr addrspace(1) %out
2128   ret void
2132 define amdgpu_kernel void @v_fcmp_f16_one(ptr addrspace(1) %out, half %src) {
2133 ; GFX11-LABEL: v_fcmp_f16_one:
2134 ; GFX11:       ; %bb.0:
2135 ; GFX11-NEXT:    s_clause 0x1
2136 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2137 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2138 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2139 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2140 ; GFX11-NEXT:    v_cmp_neq_f16_e64 s[2:3], 0x5640, s4
2141 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2142 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2143 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2144 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2145 ; GFX11-NEXT:    s_nop 0
2146 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2147 ; GFX11-NEXT:    s_endpgm
2149 ; GFX9-LABEL: v_fcmp_f16_one:
2150 ; GFX9:       ; %bb.0:
2151 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2152 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2153 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2154 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2155 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2156 ; GFX9-NEXT:    v_cmp_neq_f16_e64 s[2:3], s4, v0
2157 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2158 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2159 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2160 ; GFX9-NEXT:    s_endpgm
2162 ; VI-SDAG-LABEL: v_fcmp_f16_one:
2163 ; VI-SDAG:       ; %bb.0:
2164 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2165 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2166 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2167 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2168 ; VI-SDAG-NEXT:    v_cmp_neq_f16_e64 s[2:3], s4, v0
2169 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2170 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2171 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2172 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2173 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2174 ; VI-SDAG-NEXT:    s_endpgm
2176 ; VI-GISEL-LABEL: v_fcmp_f16_one:
2177 ; VI-GISEL:       ; %bb.0:
2178 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2179 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2180 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2181 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2182 ; VI-GISEL-NEXT:    v_cmp_neq_f16_e64 s[2:3], s4, v0
2183 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2184 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2185 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2186 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2187 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2188 ; VI-GISEL-NEXT:    s_endpgm
2189   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 6)
2190   store i64 %result, ptr addrspace(1) %out
2191   ret void
2195 define amdgpu_kernel void @v_fcmp_f16_ogt(ptr addrspace(1) %out, half %src) {
2196 ; GFX11-LABEL: v_fcmp_f16_ogt:
2197 ; GFX11:       ; %bb.0:
2198 ; GFX11-NEXT:    s_clause 0x1
2199 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2200 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2201 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2202 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2203 ; GFX11-NEXT:    v_cmp_lt_f16_e64 s[2:3], 0x5640, s4
2204 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2205 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2206 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2207 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2208 ; GFX11-NEXT:    s_nop 0
2209 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2210 ; GFX11-NEXT:    s_endpgm
2212 ; GFX9-LABEL: v_fcmp_f16_ogt:
2213 ; GFX9:       ; %bb.0:
2214 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2215 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2216 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2217 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2218 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2219 ; GFX9-NEXT:    v_cmp_gt_f16_e64 s[2:3], s4, v0
2220 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2221 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2222 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2223 ; GFX9-NEXT:    s_endpgm
2225 ; VI-SDAG-LABEL: v_fcmp_f16_ogt:
2226 ; VI-SDAG:       ; %bb.0:
2227 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2228 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2229 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2230 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2231 ; VI-SDAG-NEXT:    v_cmp_gt_f16_e64 s[2:3], s4, v0
2232 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2233 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2234 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2235 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2236 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2237 ; VI-SDAG-NEXT:    s_endpgm
2239 ; VI-GISEL-LABEL: v_fcmp_f16_ogt:
2240 ; VI-GISEL:       ; %bb.0:
2241 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2242 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2243 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2244 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2245 ; VI-GISEL-NEXT:    v_cmp_gt_f16_e64 s[2:3], s4, v0
2246 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2247 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2248 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2249 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2250 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2251 ; VI-GISEL-NEXT:    s_endpgm
2252   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 2)
2253   store i64 %result, ptr addrspace(1) %out
2254   ret void
2258 define amdgpu_kernel void @v_fcmp_f16_oge(ptr addrspace(1) %out, half %src) {
2259 ; GFX11-LABEL: v_fcmp_f16_oge:
2260 ; GFX11:       ; %bb.0:
2261 ; GFX11-NEXT:    s_clause 0x1
2262 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2263 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2264 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2265 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2266 ; GFX11-NEXT:    v_cmp_le_f16_e64 s[2:3], 0x5640, s4
2267 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2268 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2269 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2270 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2271 ; GFX11-NEXT:    s_nop 0
2272 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2273 ; GFX11-NEXT:    s_endpgm
2275 ; GFX9-LABEL: v_fcmp_f16_oge:
2276 ; GFX9:       ; %bb.0:
2277 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2278 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2279 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2280 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2281 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2282 ; GFX9-NEXT:    v_cmp_ge_f16_e64 s[2:3], s4, v0
2283 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2284 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2285 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2286 ; GFX9-NEXT:    s_endpgm
2288 ; VI-SDAG-LABEL: v_fcmp_f16_oge:
2289 ; VI-SDAG:       ; %bb.0:
2290 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2291 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2292 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2293 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2294 ; VI-SDAG-NEXT:    v_cmp_ge_f16_e64 s[2:3], s4, v0
2295 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2296 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2297 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2298 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2299 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2300 ; VI-SDAG-NEXT:    s_endpgm
2302 ; VI-GISEL-LABEL: v_fcmp_f16_oge:
2303 ; VI-GISEL:       ; %bb.0:
2304 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2305 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2306 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2307 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2308 ; VI-GISEL-NEXT:    v_cmp_ge_f16_e64 s[2:3], s4, v0
2309 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2310 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2311 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2312 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2313 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2314 ; VI-GISEL-NEXT:    s_endpgm
2315   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 3)
2316   store i64 %result, ptr addrspace(1) %out
2317   ret void
2321 define amdgpu_kernel void @v_fcmp_f16_olt(ptr addrspace(1) %out, half %src) {
2322 ; GFX11-LABEL: v_fcmp_f16_olt:
2323 ; GFX11:       ; %bb.0:
2324 ; GFX11-NEXT:    s_clause 0x1
2325 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2326 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2327 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2328 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2329 ; GFX11-NEXT:    v_cmp_gt_f16_e64 s[2:3], 0x5640, s4
2330 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2331 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2332 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2333 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2334 ; GFX11-NEXT:    s_nop 0
2335 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2336 ; GFX11-NEXT:    s_endpgm
2338 ; GFX9-LABEL: v_fcmp_f16_olt:
2339 ; GFX9:       ; %bb.0:
2340 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2341 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2342 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2343 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2344 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2345 ; GFX9-NEXT:    v_cmp_lt_f16_e64 s[2:3], s4, v0
2346 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2347 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2348 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2349 ; GFX9-NEXT:    s_endpgm
2351 ; VI-SDAG-LABEL: v_fcmp_f16_olt:
2352 ; VI-SDAG:       ; %bb.0:
2353 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2354 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2355 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2356 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2357 ; VI-SDAG-NEXT:    v_cmp_lt_f16_e64 s[2:3], s4, v0
2358 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2359 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2360 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2361 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2362 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2363 ; VI-SDAG-NEXT:    s_endpgm
2365 ; VI-GISEL-LABEL: v_fcmp_f16_olt:
2366 ; VI-GISEL:       ; %bb.0:
2367 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2368 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2369 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2370 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2371 ; VI-GISEL-NEXT:    v_cmp_lt_f16_e64 s[2:3], s4, v0
2372 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2373 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2374 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2375 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2376 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2377 ; VI-GISEL-NEXT:    s_endpgm
2378   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 4)
2379   store i64 %result, ptr addrspace(1) %out
2380   ret void
2384 define amdgpu_kernel void @v_fcmp_f16_ole(ptr addrspace(1) %out, half %src) {
2385 ; GFX11-LABEL: v_fcmp_f16_ole:
2386 ; GFX11:       ; %bb.0:
2387 ; GFX11-NEXT:    s_clause 0x1
2388 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2389 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2390 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2391 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2392 ; GFX11-NEXT:    v_cmp_ge_f16_e64 s[2:3], 0x5640, s4
2393 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2394 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2395 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2396 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2397 ; GFX11-NEXT:    s_nop 0
2398 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2399 ; GFX11-NEXT:    s_endpgm
2401 ; GFX9-LABEL: v_fcmp_f16_ole:
2402 ; GFX9:       ; %bb.0:
2403 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2404 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2405 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2406 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2407 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2408 ; GFX9-NEXT:    v_cmp_le_f16_e64 s[2:3], s4, v0
2409 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2410 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2411 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2412 ; GFX9-NEXT:    s_endpgm
2414 ; VI-SDAG-LABEL: v_fcmp_f16_ole:
2415 ; VI-SDAG:       ; %bb.0:
2416 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2417 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2418 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2419 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2420 ; VI-SDAG-NEXT:    v_cmp_le_f16_e64 s[2:3], s4, v0
2421 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2422 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2423 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2424 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2425 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2426 ; VI-SDAG-NEXT:    s_endpgm
2428 ; VI-GISEL-LABEL: v_fcmp_f16_ole:
2429 ; VI-GISEL:       ; %bb.0:
2430 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2431 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2432 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2433 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2434 ; VI-GISEL-NEXT:    v_cmp_le_f16_e64 s[2:3], s4, v0
2435 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2436 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2437 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2438 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2439 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2440 ; VI-GISEL-NEXT:    s_endpgm
2441   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 5)
2442   store i64 %result, ptr addrspace(1) %out
2443   ret void
2447 define amdgpu_kernel void @v_fcmp_f16_ueq(ptr addrspace(1) %out, half %src) {
2448 ; GFX11-LABEL: v_fcmp_f16_ueq:
2449 ; GFX11:       ; %bb.0:
2450 ; GFX11-NEXT:    s_clause 0x1
2451 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2452 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2453 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2454 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2455 ; GFX11-NEXT:    v_cmp_nlg_f16_e64 s[2:3], 0x5640, s4
2456 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2457 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2458 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2459 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2460 ; GFX11-NEXT:    s_nop 0
2461 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2462 ; GFX11-NEXT:    s_endpgm
2464 ; GFX9-LABEL: v_fcmp_f16_ueq:
2465 ; GFX9:       ; %bb.0:
2466 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2467 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2468 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2469 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2470 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2471 ; GFX9-NEXT:    v_cmp_nlg_f16_e64 s[2:3], s4, v0
2472 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2473 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2474 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2475 ; GFX9-NEXT:    s_endpgm
2477 ; VI-SDAG-LABEL: v_fcmp_f16_ueq:
2478 ; VI-SDAG:       ; %bb.0:
2479 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2480 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2481 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2482 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2483 ; VI-SDAG-NEXT:    v_cmp_nlg_f16_e64 s[2:3], s4, v0
2484 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2485 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2486 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2487 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2488 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2489 ; VI-SDAG-NEXT:    s_endpgm
2491 ; VI-GISEL-LABEL: v_fcmp_f16_ueq:
2492 ; VI-GISEL:       ; %bb.0:
2493 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2494 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2495 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2496 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2497 ; VI-GISEL-NEXT:    v_cmp_nlg_f16_e64 s[2:3], s4, v0
2498 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2499 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2500 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2501 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2502 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2503 ; VI-GISEL-NEXT:    s_endpgm
2504   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 9)
2505   store i64 %result, ptr addrspace(1) %out
2506   ret void
2510 define amdgpu_kernel void @v_fcmp_f16_une(ptr addrspace(1) %out, half %src) {
2511 ; GFX11-LABEL: v_fcmp_f16_une:
2512 ; GFX11:       ; %bb.0:
2513 ; GFX11-NEXT:    s_clause 0x1
2514 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2515 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2516 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2517 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2518 ; GFX11-NEXT:    v_cmp_neq_f16_e64 s[2:3], 0x5640, s4
2519 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2520 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2521 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2522 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2523 ; GFX11-NEXT:    s_nop 0
2524 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2525 ; GFX11-NEXT:    s_endpgm
2527 ; GFX9-LABEL: v_fcmp_f16_une:
2528 ; GFX9:       ; %bb.0:
2529 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2530 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2531 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2532 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2533 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2534 ; GFX9-NEXT:    v_cmp_neq_f16_e64 s[2:3], s4, v0
2535 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2536 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2537 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2538 ; GFX9-NEXT:    s_endpgm
2540 ; VI-SDAG-LABEL: v_fcmp_f16_une:
2541 ; VI-SDAG:       ; %bb.0:
2542 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2543 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2544 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2545 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2546 ; VI-SDAG-NEXT:    v_cmp_neq_f16_e64 s[2:3], s4, v0
2547 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2548 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2549 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2550 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2551 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2552 ; VI-SDAG-NEXT:    s_endpgm
2554 ; VI-GISEL-LABEL: v_fcmp_f16_une:
2555 ; VI-GISEL:       ; %bb.0:
2556 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2557 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2558 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2559 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2560 ; VI-GISEL-NEXT:    v_cmp_neq_f16_e64 s[2:3], s4, v0
2561 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2562 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2563 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2564 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2565 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2566 ; VI-GISEL-NEXT:    s_endpgm
2567   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 14)
2568   store i64 %result, ptr addrspace(1) %out
2569   ret void
2573 define amdgpu_kernel void @v_fcmp_f16_ugt(ptr addrspace(1) %out, half %src) {
2574 ; GFX11-LABEL: v_fcmp_f16_ugt:
2575 ; GFX11:       ; %bb.0:
2576 ; GFX11-NEXT:    s_clause 0x1
2577 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2578 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2579 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2580 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2581 ; GFX11-NEXT:    v_cmp_nge_f16_e64 s[2:3], 0x5640, s4
2582 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2583 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2584 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2585 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2586 ; GFX11-NEXT:    s_nop 0
2587 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2588 ; GFX11-NEXT:    s_endpgm
2590 ; GFX9-LABEL: v_fcmp_f16_ugt:
2591 ; GFX9:       ; %bb.0:
2592 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2593 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2594 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2595 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2596 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2597 ; GFX9-NEXT:    v_cmp_nle_f16_e64 s[2:3], s4, v0
2598 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2599 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2600 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2601 ; GFX9-NEXT:    s_endpgm
2603 ; VI-SDAG-LABEL: v_fcmp_f16_ugt:
2604 ; VI-SDAG:       ; %bb.0:
2605 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2606 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2607 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2608 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2609 ; VI-SDAG-NEXT:    v_cmp_nle_f16_e64 s[2:3], s4, v0
2610 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2611 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2612 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2613 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2614 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2615 ; VI-SDAG-NEXT:    s_endpgm
2617 ; VI-GISEL-LABEL: v_fcmp_f16_ugt:
2618 ; VI-GISEL:       ; %bb.0:
2619 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2620 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2621 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2622 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2623 ; VI-GISEL-NEXT:    v_cmp_nle_f16_e64 s[2:3], s4, v0
2624 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2625 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2626 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2627 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2628 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2629 ; VI-GISEL-NEXT:    s_endpgm
2630   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 10)
2631   store i64 %result, ptr addrspace(1) %out
2632   ret void
2636 define amdgpu_kernel void @v_fcmp_f16_uge(ptr addrspace(1) %out, half %src) {
2637 ; GFX11-LABEL: v_fcmp_f16_uge:
2638 ; GFX11:       ; %bb.0:
2639 ; GFX11-NEXT:    s_clause 0x1
2640 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2641 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2642 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2643 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2644 ; GFX11-NEXT:    v_cmp_ngt_f16_e64 s[2:3], 0x5640, s4
2645 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2646 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2647 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2648 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2649 ; GFX11-NEXT:    s_nop 0
2650 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2651 ; GFX11-NEXT:    s_endpgm
2653 ; GFX9-LABEL: v_fcmp_f16_uge:
2654 ; GFX9:       ; %bb.0:
2655 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2656 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2657 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2658 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2659 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2660 ; GFX9-NEXT:    v_cmp_nlt_f16_e64 s[2:3], s4, v0
2661 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2662 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2663 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2664 ; GFX9-NEXT:    s_endpgm
2666 ; VI-SDAG-LABEL: v_fcmp_f16_uge:
2667 ; VI-SDAG:       ; %bb.0:
2668 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2669 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2670 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2671 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2672 ; VI-SDAG-NEXT:    v_cmp_nlt_f16_e64 s[2:3], s4, v0
2673 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2674 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2675 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2676 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2677 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2678 ; VI-SDAG-NEXT:    s_endpgm
2680 ; VI-GISEL-LABEL: v_fcmp_f16_uge:
2681 ; VI-GISEL:       ; %bb.0:
2682 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2683 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2684 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2685 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2686 ; VI-GISEL-NEXT:    v_cmp_nlt_f16_e64 s[2:3], s4, v0
2687 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2688 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2689 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2690 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2691 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2692 ; VI-GISEL-NEXT:    s_endpgm
2693   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 11)
2694   store i64 %result, ptr addrspace(1) %out
2695   ret void
2699 define amdgpu_kernel void @v_fcmp_f16_ult(ptr addrspace(1) %out, half %src) {
2700 ; GFX11-LABEL: v_fcmp_f16_ult:
2701 ; GFX11:       ; %bb.0:
2702 ; GFX11-NEXT:    s_clause 0x1
2703 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2704 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2705 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2706 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2707 ; GFX11-NEXT:    v_cmp_nle_f16_e64 s[2:3], 0x5640, s4
2708 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2709 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2710 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2711 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2712 ; GFX11-NEXT:    s_nop 0
2713 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2714 ; GFX11-NEXT:    s_endpgm
2716 ; GFX9-LABEL: v_fcmp_f16_ult:
2717 ; GFX9:       ; %bb.0:
2718 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2719 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2720 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2721 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2722 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2723 ; GFX9-NEXT:    v_cmp_nge_f16_e64 s[2:3], s4, v0
2724 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2725 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2726 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2727 ; GFX9-NEXT:    s_endpgm
2729 ; VI-SDAG-LABEL: v_fcmp_f16_ult:
2730 ; VI-SDAG:       ; %bb.0:
2731 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2732 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2733 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2734 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2735 ; VI-SDAG-NEXT:    v_cmp_nge_f16_e64 s[2:3], s4, v0
2736 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2737 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2738 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2739 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2740 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2741 ; VI-SDAG-NEXT:    s_endpgm
2743 ; VI-GISEL-LABEL: v_fcmp_f16_ult:
2744 ; VI-GISEL:       ; %bb.0:
2745 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2746 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2747 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2748 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2749 ; VI-GISEL-NEXT:    v_cmp_nge_f16_e64 s[2:3], s4, v0
2750 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2751 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2752 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2753 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2754 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2755 ; VI-GISEL-NEXT:    s_endpgm
2756   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 12)
2757   store i64 %result, ptr addrspace(1) %out
2758   ret void
2761 define amdgpu_kernel void @v_fcmp_f16_o(ptr addrspace(1) %out, half %src) {
2762 ; GFX11-LABEL: v_fcmp_f16_o:
2763 ; GFX11:       ; %bb.0:
2764 ; GFX11-NEXT:    s_clause 0x1
2765 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2766 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2767 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2768 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2769 ; GFX11-NEXT:    v_cmp_o_f16_e64 s[2:3], 0x5640, s4
2770 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2771 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2772 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2773 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2774 ; GFX11-NEXT:    s_nop 0
2775 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2776 ; GFX11-NEXT:    s_endpgm
2778 ; GFX9-LABEL: v_fcmp_f16_o:
2779 ; GFX9:       ; %bb.0:
2780 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2781 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2782 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2783 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2784 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2785 ; GFX9-NEXT:    v_cmp_o_f16_e64 s[2:3], s4, v0
2786 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2787 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2788 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2789 ; GFX9-NEXT:    s_endpgm
2791 ; VI-SDAG-LABEL: v_fcmp_f16_o:
2792 ; VI-SDAG:       ; %bb.0:
2793 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2794 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2795 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2796 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2797 ; VI-SDAG-NEXT:    v_cmp_o_f16_e64 s[2:3], s4, v0
2798 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2799 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2800 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2801 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2802 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2803 ; VI-SDAG-NEXT:    s_endpgm
2805 ; VI-GISEL-LABEL: v_fcmp_f16_o:
2806 ; VI-GISEL:       ; %bb.0:
2807 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2808 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2809 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2810 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2811 ; VI-GISEL-NEXT:    v_cmp_o_f16_e64 s[2:3], s4, v0
2812 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2813 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2814 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2815 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2816 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2817 ; VI-GISEL-NEXT:    s_endpgm
2818   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 7)
2819   store i64 %result, ptr addrspace(1) %out
2820   ret void
2823 define amdgpu_kernel void @v_fcmp_f16_uo(ptr addrspace(1) %out, half %src) {
2824 ; GFX11-LABEL: v_fcmp_f16_uo:
2825 ; GFX11:       ; %bb.0:
2826 ; GFX11-NEXT:    s_clause 0x1
2827 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2828 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2829 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2830 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2831 ; GFX11-NEXT:    v_cmp_u_f16_e64 s[2:3], 0x5640, s4
2832 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2833 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2834 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2835 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2836 ; GFX11-NEXT:    s_nop 0
2837 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2838 ; GFX11-NEXT:    s_endpgm
2840 ; GFX9-LABEL: v_fcmp_f16_uo:
2841 ; GFX9:       ; %bb.0:
2842 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2843 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2844 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2845 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2846 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2847 ; GFX9-NEXT:    v_cmp_u_f16_e64 s[2:3], s4, v0
2848 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2849 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2850 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2851 ; GFX9-NEXT:    s_endpgm
2853 ; VI-SDAG-LABEL: v_fcmp_f16_uo:
2854 ; VI-SDAG:       ; %bb.0:
2855 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2856 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2857 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2858 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2859 ; VI-SDAG-NEXT:    v_cmp_u_f16_e64 s[2:3], s4, v0
2860 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2861 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2862 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2863 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2864 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2865 ; VI-SDAG-NEXT:    s_endpgm
2867 ; VI-GISEL-LABEL: v_fcmp_f16_uo:
2868 ; VI-GISEL:       ; %bb.0:
2869 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2870 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2871 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2872 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2873 ; VI-GISEL-NEXT:    v_cmp_u_f16_e64 s[2:3], s4, v0
2874 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2875 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2876 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2877 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2878 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2879 ; VI-GISEL-NEXT:    s_endpgm
2880   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 8)
2881   store i64 %result, ptr addrspace(1) %out
2882   ret void
2885 define amdgpu_kernel void @v_fcmp_f16_ule(ptr addrspace(1) %out, half %src) {
2886 ; GFX11-LABEL: v_fcmp_f16_ule:
2887 ; GFX11:       ; %bb.0:
2888 ; GFX11-NEXT:    s_clause 0x1
2889 ; GFX11-NEXT:    s_load_b32 s4, s[2:3], 0x2c
2890 ; GFX11-NEXT:    s_load_b64 s[0:1], s[2:3], 0x24
2891 ; GFX11-NEXT:    v_mov_b32_e32 v2, 0
2892 ; GFX11-NEXT:    s_waitcnt lgkmcnt(0)
2893 ; GFX11-NEXT:    v_cmp_nlt_f16_e64 s[2:3], 0x5640, s4
2894 ; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_2)
2895 ; GFX11-NEXT:    v_mov_b32_e32 v0, s2
2896 ; GFX11-NEXT:    v_mov_b32_e32 v1, s3
2897 ; GFX11-NEXT:    global_store_b64 v2, v[0:1], s[0:1]
2898 ; GFX11-NEXT:    s_nop 0
2899 ; GFX11-NEXT:    s_sendmsg sendmsg(MSG_DEALLOC_VGPRS)
2900 ; GFX11-NEXT:    s_endpgm
2902 ; GFX9-LABEL: v_fcmp_f16_ule:
2903 ; GFX9:       ; %bb.0:
2904 ; GFX9-NEXT:    s_load_dword s4, s[2:3], 0x2c
2905 ; GFX9-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2906 ; GFX9-NEXT:    v_mov_b32_e32 v0, 0x5640
2907 ; GFX9-NEXT:    v_mov_b32_e32 v2, 0
2908 ; GFX9-NEXT:    s_waitcnt lgkmcnt(0)
2909 ; GFX9-NEXT:    v_cmp_ngt_f16_e64 s[2:3], s4, v0
2910 ; GFX9-NEXT:    v_mov_b32_e32 v0, s2
2911 ; GFX9-NEXT:    v_mov_b32_e32 v1, s3
2912 ; GFX9-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]
2913 ; GFX9-NEXT:    s_endpgm
2915 ; VI-SDAG-LABEL: v_fcmp_f16_ule:
2916 ; VI-SDAG:       ; %bb.0:
2917 ; VI-SDAG-NEXT:    s_load_dword s4, s[2:3], 0x2c
2918 ; VI-SDAG-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2919 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, 0x5640
2920 ; VI-SDAG-NEXT:    s_waitcnt lgkmcnt(0)
2921 ; VI-SDAG-NEXT:    v_cmp_ngt_f16_e64 s[2:3], s4, v0
2922 ; VI-SDAG-NEXT:    v_mov_b32_e32 v0, s0
2923 ; VI-SDAG-NEXT:    v_mov_b32_e32 v2, s2
2924 ; VI-SDAG-NEXT:    v_mov_b32_e32 v1, s1
2925 ; VI-SDAG-NEXT:    v_mov_b32_e32 v3, s3
2926 ; VI-SDAG-NEXT:    flat_store_dwordx2 v[0:1], v[2:3]
2927 ; VI-SDAG-NEXT:    s_endpgm
2929 ; VI-GISEL-LABEL: v_fcmp_f16_ule:
2930 ; VI-GISEL:       ; %bb.0:
2931 ; VI-GISEL-NEXT:    s_load_dword s4, s[2:3], 0x2c
2932 ; VI-GISEL-NEXT:    s_load_dwordx2 s[0:1], s[2:3], 0x24
2933 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, 0x5640
2934 ; VI-GISEL-NEXT:    s_waitcnt lgkmcnt(0)
2935 ; VI-GISEL-NEXT:    v_cmp_ngt_f16_e64 s[2:3], s4, v0
2936 ; VI-GISEL-NEXT:    v_mov_b32_e32 v0, s2
2937 ; VI-GISEL-NEXT:    v_mov_b32_e32 v3, s1
2938 ; VI-GISEL-NEXT:    v_mov_b32_e32 v1, s3
2939 ; VI-GISEL-NEXT:    v_mov_b32_e32 v2, s0
2940 ; VI-GISEL-NEXT:    flat_store_dwordx2 v[2:3], v[0:1]
2941 ; VI-GISEL-NEXT:    s_endpgm
2942   %result = call i64 @llvm.amdgcn.fcmp.f16(half %src, half 100.00, i32 13)
2943   store i64 %result, ptr addrspace(1) %out
2944   ret void
2947 attributes #0 = { nounwind readnone convergent }