xref: /llvm-project/llvm/test/CodeGen/AMDGPU/llvm.minimum.f64.ll (revision a6fc489bb7a2e9fb3a7f70cccc181e4ee70374bf)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx703 < %s | FileCheck -check-prefixes=GCN,GFX7 %s
3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 < %s | FileCheck -check-prefixes=GCN,GFX8 %s
4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9 %s
5; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX900 %s
6; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx950 < %s | FileCheck -check-prefixes=GCN,GFX9,GFX950 %s
7; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1030 < %s | FileCheck -check-prefixes=GCN,GFX10 %s
8; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 < %s | FileCheck -check-prefixes=GCN,GFX11 %s
9; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 < %s | FileCheck -check-prefixes=GCN,GFX12 %s
10
11define double @v_minimum_f64(double %src0, double %src1) {
12; GFX7-LABEL: v_minimum_f64:
13; GFX7:       ; %bb.0:
14; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
15; GFX7-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
16; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
17; GFX7-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
18; GFX7-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
19; GFX7-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
20; GFX7-NEXT:    s_setpc_b64 s[30:31]
21;
22; GFX8-LABEL: v_minimum_f64:
23; GFX8:       ; %bb.0:
24; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
25; GFX8-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
26; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
27; GFX8-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
28; GFX8-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
29; GFX8-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
30; GFX8-NEXT:    s_setpc_b64 s[30:31]
31;
32; GFX900-LABEL: v_minimum_f64:
33; GFX900:       ; %bb.0:
34; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
35; GFX900-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
36; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
37; GFX900-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
38; GFX900-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
39; GFX900-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
40; GFX900-NEXT:    s_setpc_b64 s[30:31]
41;
42; GFX950-LABEL: v_minimum_f64:
43; GFX950:       ; %bb.0:
44; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
45; GFX950-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
46; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
47; GFX950-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
48; GFX950-NEXT:    s_nop 0
49; GFX950-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
50; GFX950-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
51; GFX950-NEXT:    s_setpc_b64 s[30:31]
52;
53; GFX10-LABEL: v_minimum_f64:
54; GFX10:       ; %bb.0:
55; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
56; GFX10-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
57; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
58; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
59; GFX10-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
60; GFX10-NEXT:    s_setpc_b64 s[30:31]
61;
62; GFX11-LABEL: v_minimum_f64:
63; GFX11:       ; %bb.0:
64; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
65; GFX11-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
66; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
67; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
68; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
69; GFX11-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
70; GFX11-NEXT:    s_setpc_b64 s[30:31]
71;
72; GFX12-LABEL: v_minimum_f64:
73; GFX12:       ; %bb.0:
74; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
75; GFX12-NEXT:    s_wait_expcnt 0x0
76; GFX12-NEXT:    s_wait_samplecnt 0x0
77; GFX12-NEXT:    s_wait_bvhcnt 0x0
78; GFX12-NEXT:    s_wait_kmcnt 0x0
79; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
80; GFX12-NEXT:    s_setpc_b64 s[30:31]
81  %op = call double @llvm.minimum.f64(double %src0, double %src1)
82  ret double %op
83}
84
85define double @v_minimum_f64__nnan(double %src0, double %src1) {
86; GFX7-LABEL: v_minimum_f64__nnan:
87; GFX7:       ; %bb.0:
88; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
89; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
90; GFX7-NEXT:    s_setpc_b64 s[30:31]
91;
92; GFX8-LABEL: v_minimum_f64__nnan:
93; GFX8:       ; %bb.0:
94; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
95; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
96; GFX8-NEXT:    s_setpc_b64 s[30:31]
97;
98; GFX9-LABEL: v_minimum_f64__nnan:
99; GFX9:       ; %bb.0:
100; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
101; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
102; GFX9-NEXT:    s_setpc_b64 s[30:31]
103;
104; GFX10-LABEL: v_minimum_f64__nnan:
105; GFX10:       ; %bb.0:
106; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
107; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
108; GFX10-NEXT:    s_setpc_b64 s[30:31]
109;
110; GFX11-LABEL: v_minimum_f64__nnan:
111; GFX11:       ; %bb.0:
112; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
113; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
114; GFX11-NEXT:    s_setpc_b64 s[30:31]
115;
116; GFX12-LABEL: v_minimum_f64__nnan:
117; GFX12:       ; %bb.0:
118; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
119; GFX12-NEXT:    s_wait_expcnt 0x0
120; GFX12-NEXT:    s_wait_samplecnt 0x0
121; GFX12-NEXT:    s_wait_bvhcnt 0x0
122; GFX12-NEXT:    s_wait_kmcnt 0x0
123; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
124; GFX12-NEXT:    s_setpc_b64 s[30:31]
125  %op = call nnan double @llvm.minimum.f64(double %src0, double %src1)
126  ret double %op
127}
128
129define double @v_minimum_f64__nsz(double %src0, double %src1) {
130; GFX7-LABEL: v_minimum_f64__nsz:
131; GFX7:       ; %bb.0:
132; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
133; GFX7-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
134; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
135; GFX7-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
136; GFX7-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
137; GFX7-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
138; GFX7-NEXT:    s_setpc_b64 s[30:31]
139;
140; GFX8-LABEL: v_minimum_f64__nsz:
141; GFX8:       ; %bb.0:
142; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
143; GFX8-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
144; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
145; GFX8-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
146; GFX8-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
147; GFX8-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
148; GFX8-NEXT:    s_setpc_b64 s[30:31]
149;
150; GFX900-LABEL: v_minimum_f64__nsz:
151; GFX900:       ; %bb.0:
152; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
153; GFX900-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
154; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
155; GFX900-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
156; GFX900-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
157; GFX900-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
158; GFX900-NEXT:    s_setpc_b64 s[30:31]
159;
160; GFX950-LABEL: v_minimum_f64__nsz:
161; GFX950:       ; %bb.0:
162; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
163; GFX950-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
164; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
165; GFX950-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
166; GFX950-NEXT:    s_nop 0
167; GFX950-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
168; GFX950-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
169; GFX950-NEXT:    s_setpc_b64 s[30:31]
170;
171; GFX10-LABEL: v_minimum_f64__nsz:
172; GFX10:       ; %bb.0:
173; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
174; GFX10-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
175; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
176; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
177; GFX10-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
178; GFX10-NEXT:    s_setpc_b64 s[30:31]
179;
180; GFX11-LABEL: v_minimum_f64__nsz:
181; GFX11:       ; %bb.0:
182; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
183; GFX11-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
184; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
185; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(NEXT) | instid1(VALU_DEP_3)
186; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
187; GFX11-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
188; GFX11-NEXT:    s_setpc_b64 s[30:31]
189;
190; GFX12-LABEL: v_minimum_f64__nsz:
191; GFX12:       ; %bb.0:
192; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
193; GFX12-NEXT:    s_wait_expcnt 0x0
194; GFX12-NEXT:    s_wait_samplecnt 0x0
195; GFX12-NEXT:    s_wait_bvhcnt 0x0
196; GFX12-NEXT:    s_wait_kmcnt 0x0
197; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
198; GFX12-NEXT:    s_setpc_b64 s[30:31]
199  %op = call nsz double @llvm.minimum.f64(double %src0, double %src1)
200  ret double %op
201}
202
203define double @v_minimum_f64__nnan_nsz(double %src0, double %src1) {
204; GFX7-LABEL: v_minimum_f64__nnan_nsz:
205; GFX7:       ; %bb.0:
206; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
207; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
208; GFX7-NEXT:    s_setpc_b64 s[30:31]
209;
210; GFX8-LABEL: v_minimum_f64__nnan_nsz:
211; GFX8:       ; %bb.0:
212; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
213; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
214; GFX8-NEXT:    s_setpc_b64 s[30:31]
215;
216; GFX9-LABEL: v_minimum_f64__nnan_nsz:
217; GFX9:       ; %bb.0:
218; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
219; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
220; GFX9-NEXT:    s_setpc_b64 s[30:31]
221;
222; GFX10-LABEL: v_minimum_f64__nnan_nsz:
223; GFX10:       ; %bb.0:
224; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
225; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
226; GFX10-NEXT:    s_setpc_b64 s[30:31]
227;
228; GFX11-LABEL: v_minimum_f64__nnan_nsz:
229; GFX11:       ; %bb.0:
230; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
231; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[2:3]
232; GFX11-NEXT:    s_setpc_b64 s[30:31]
233;
234; GFX12-LABEL: v_minimum_f64__nnan_nsz:
235; GFX12:       ; %bb.0:
236; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
237; GFX12-NEXT:    s_wait_expcnt 0x0
238; GFX12-NEXT:    s_wait_samplecnt 0x0
239; GFX12-NEXT:    s_wait_bvhcnt 0x0
240; GFX12-NEXT:    s_wait_kmcnt 0x0
241; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
242; GFX12-NEXT:    s_setpc_b64 s[30:31]
243  %op = call nnan nsz double @llvm.minimum.f64(double %src0, double %src1)
244  ret double %op
245}
246
247define double @v_minimum_f64__nnan_src0(double %arg0, double %src1) {
248; GFX7-LABEL: v_minimum_f64__nnan_src0:
249; GFX7:       ; %bb.0:
250; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
251; GFX7-NEXT:    v_add_f64 v[0:1], v[0:1], 1.0
252; GFX7-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
253; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
254; GFX7-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
255; GFX7-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
256; GFX7-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
257; GFX7-NEXT:    s_setpc_b64 s[30:31]
258;
259; GFX8-LABEL: v_minimum_f64__nnan_src0:
260; GFX8:       ; %bb.0:
261; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
262; GFX8-NEXT:    v_add_f64 v[0:1], v[0:1], 1.0
263; GFX8-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
264; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
265; GFX8-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
266; GFX8-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
267; GFX8-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
268; GFX8-NEXT:    s_setpc_b64 s[30:31]
269;
270; GFX900-LABEL: v_minimum_f64__nnan_src0:
271; GFX900:       ; %bb.0:
272; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
273; GFX900-NEXT:    v_add_f64 v[0:1], v[0:1], 1.0
274; GFX900-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
275; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
276; GFX900-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
277; GFX900-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
278; GFX900-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
279; GFX900-NEXT:    s_setpc_b64 s[30:31]
280;
281; GFX950-LABEL: v_minimum_f64__nnan_src0:
282; GFX950:       ; %bb.0:
283; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
284; GFX950-NEXT:    v_add_f64 v[0:1], v[0:1], 1.0
285; GFX950-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
286; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
287; GFX950-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
288; GFX950-NEXT:    s_nop 0
289; GFX950-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
290; GFX950-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
291; GFX950-NEXT:    s_setpc_b64 s[30:31]
292;
293; GFX10-LABEL: v_minimum_f64__nnan_src0:
294; GFX10:       ; %bb.0:
295; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
296; GFX10-NEXT:    v_add_f64 v[0:1], v[0:1], 1.0
297; GFX10-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
298; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
299; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
300; GFX10-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
301; GFX10-NEXT:    s_setpc_b64 s[30:31]
302;
303; GFX11-LABEL: v_minimum_f64__nnan_src0:
304; GFX11:       ; %bb.0:
305; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
306; GFX11-NEXT:    v_add_f64 v[0:1], v[0:1], 1.0
307; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
308; GFX11-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
309; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
310; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
311; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
312; GFX11-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
313; GFX11-NEXT:    s_setpc_b64 s[30:31]
314;
315; GFX12-LABEL: v_minimum_f64__nnan_src0:
316; GFX12:       ; %bb.0:
317; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
318; GFX12-NEXT:    s_wait_expcnt 0x0
319; GFX12-NEXT:    s_wait_samplecnt 0x0
320; GFX12-NEXT:    s_wait_bvhcnt 0x0
321; GFX12-NEXT:    s_wait_kmcnt 0x0
322; GFX12-NEXT:    v_add_f64_e32 v[0:1], 1.0, v[0:1]
323; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
324; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
325; GFX12-NEXT:    s_setpc_b64 s[30:31]
326  %src0 = fadd nnan double %arg0, 1.0
327  %op = call double @llvm.minimum.f64(double %src0, double %src1)
328  ret double %op
329}
330
331define double @v_minimum_f64__nnan_src1(double %src0, double %arg1) {
332; GFX7-LABEL: v_minimum_f64__nnan_src1:
333; GFX7:       ; %bb.0:
334; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
335; GFX7-NEXT:    v_add_f64 v[2:3], v[2:3], 1.0
336; GFX7-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
337; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
338; GFX7-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
339; GFX7-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
340; GFX7-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
341; GFX7-NEXT:    s_setpc_b64 s[30:31]
342;
343; GFX8-LABEL: v_minimum_f64__nnan_src1:
344; GFX8:       ; %bb.0:
345; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
346; GFX8-NEXT:    v_add_f64 v[2:3], v[2:3], 1.0
347; GFX8-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
348; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
349; GFX8-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
350; GFX8-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
351; GFX8-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
352; GFX8-NEXT:    s_setpc_b64 s[30:31]
353;
354; GFX900-LABEL: v_minimum_f64__nnan_src1:
355; GFX900:       ; %bb.0:
356; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
357; GFX900-NEXT:    v_add_f64 v[2:3], v[2:3], 1.0
358; GFX900-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
359; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
360; GFX900-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
361; GFX900-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
362; GFX900-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
363; GFX900-NEXT:    s_setpc_b64 s[30:31]
364;
365; GFX950-LABEL: v_minimum_f64__nnan_src1:
366; GFX950:       ; %bb.0:
367; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
368; GFX950-NEXT:    v_add_f64 v[2:3], v[2:3], 1.0
369; GFX950-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
370; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[2:3]
371; GFX950-NEXT:    v_mov_b32_e32 v1, 0x7ff80000
372; GFX950-NEXT:    s_nop 0
373; GFX950-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
374; GFX950-NEXT:    v_cndmask_b32_e32 v1, v5, v1, vcc
375; GFX950-NEXT:    s_setpc_b64 s[30:31]
376;
377; GFX10-LABEL: v_minimum_f64__nnan_src1:
378; GFX10:       ; %bb.0:
379; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
380; GFX10-NEXT:    v_add_f64 v[2:3], v[2:3], 1.0
381; GFX10-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
382; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
383; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
384; GFX10-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
385; GFX10-NEXT:    s_setpc_b64 s[30:31]
386;
387; GFX11-LABEL: v_minimum_f64__nnan_src1:
388; GFX11:       ; %bb.0:
389; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
390; GFX11-NEXT:    v_add_f64 v[2:3], v[2:3], 1.0
391; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_2)
392; GFX11-NEXT:    v_min_f64 v[4:5], v[0:1], v[2:3]
393; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[2:3]
394; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc_lo
395; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3)
396; GFX11-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, vcc_lo
397; GFX11-NEXT:    s_setpc_b64 s[30:31]
398;
399; GFX12-LABEL: v_minimum_f64__nnan_src1:
400; GFX12:       ; %bb.0:
401; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
402; GFX12-NEXT:    s_wait_expcnt 0x0
403; GFX12-NEXT:    s_wait_samplecnt 0x0
404; GFX12-NEXT:    s_wait_bvhcnt 0x0
405; GFX12-NEXT:    s_wait_kmcnt 0x0
406; GFX12-NEXT:    v_add_f64_e32 v[2:3], 1.0, v[2:3]
407; GFX12-NEXT:    s_delay_alu instid0(VALU_DEP_1)
408; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[2:3]
409; GFX12-NEXT:    s_setpc_b64 s[30:31]
410  %src1 = fadd nnan double %arg1, 1.0
411  %op = call double @llvm.minimum.f64(double %src0, double %src1)
412  ret double %op
413}
414
415define void @s_minimum_f64(double inreg %src0, double inreg %src1) {
416; GFX7-LABEL: s_minimum_f64:
417; GFX7:       ; %bb.0:
418; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
419; GFX7-NEXT:    v_mov_b32_e32 v0, s18
420; GFX7-NEXT:    v_mov_b32_e32 v1, s19
421; GFX7-NEXT:    v_min_f64 v[2:3], s[16:17], v[0:1]
422; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, s[16:17], v[0:1]
423; GFX7-NEXT:    v_mov_b32_e32 v4, 0x7ff80000
424; GFX7-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc
425; GFX7-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
426; GFX7-NEXT:    ;;#ASMSTART
427; GFX7-NEXT:    ; use v[0:1]
428; GFX7-NEXT:    ;;#ASMEND
429; GFX7-NEXT:    s_setpc_b64 s[30:31]
430;
431; GFX8-LABEL: s_minimum_f64:
432; GFX8:       ; %bb.0:
433; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
434; GFX8-NEXT:    v_mov_b32_e32 v0, s18
435; GFX8-NEXT:    v_mov_b32_e32 v1, s19
436; GFX8-NEXT:    v_min_f64 v[2:3], s[16:17], v[0:1]
437; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, s[16:17], v[0:1]
438; GFX8-NEXT:    v_mov_b32_e32 v4, 0x7ff80000
439; GFX8-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc
440; GFX8-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
441; GFX8-NEXT:    ;;#ASMSTART
442; GFX8-NEXT:    ; use v[0:1]
443; GFX8-NEXT:    ;;#ASMEND
444; GFX8-NEXT:    s_setpc_b64 s[30:31]
445;
446; GFX900-LABEL: s_minimum_f64:
447; GFX900:       ; %bb.0:
448; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
449; GFX900-NEXT:    v_mov_b32_e32 v0, s18
450; GFX900-NEXT:    v_mov_b32_e32 v1, s19
451; GFX900-NEXT:    v_min_f64 v[2:3], s[16:17], v[0:1]
452; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, s[16:17], v[0:1]
453; GFX900-NEXT:    v_mov_b32_e32 v4, 0x7ff80000
454; GFX900-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc
455; GFX900-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
456; GFX900-NEXT:    ;;#ASMSTART
457; GFX900-NEXT:    ; use v[0:1]
458; GFX900-NEXT:    ;;#ASMEND
459; GFX900-NEXT:    s_setpc_b64 s[30:31]
460;
461; GFX950-LABEL: s_minimum_f64:
462; GFX950:       ; %bb.0:
463; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
464; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[2:3]
465; GFX950-NEXT:    v_min_f64 v[2:3], s[0:1], v[0:1]
466; GFX950-NEXT:    v_mov_b32_e32 v4, 0x7ff80000
467; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, s[0:1], v[0:1]
468; GFX950-NEXT:    s_nop 1
469; GFX950-NEXT:    v_cndmask_b32_e32 v1, v3, v4, vcc
470; GFX950-NEXT:    v_cndmask_b32_e64 v0, v2, 0, vcc
471; GFX950-NEXT:    ;;#ASMSTART
472; GFX950-NEXT:    ; use v[0:1]
473; GFX950-NEXT:    ;;#ASMEND
474; GFX950-NEXT:    s_setpc_b64 s[30:31]
475;
476; GFX10-LABEL: s_minimum_f64:
477; GFX10:       ; %bb.0:
478; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
479; GFX10-NEXT:    v_min_f64 v[0:1], s[16:17], s[18:19]
480; GFX10-NEXT:    v_cmp_u_f64_e64 s4, s[16:17], s[18:19]
481; GFX10-NEXT:    v_cndmask_b32_e64 v1, v1, 0x7ff80000, s4
482; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s4
483; GFX10-NEXT:    ;;#ASMSTART
484; GFX10-NEXT:    ; use v[0:1]
485; GFX10-NEXT:    ;;#ASMEND
486; GFX10-NEXT:    s_setpc_b64 s[30:31]
487;
488; GFX11-LABEL: s_minimum_f64:
489; GFX11:       ; %bb.0:
490; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
491; GFX11-NEXT:    v_min_f64 v[0:1], s[0:1], s[2:3]
492; GFX11-NEXT:    v_cmp_u_f64_e64 s0, s[0:1], s[2:3]
493; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
494; GFX11-NEXT:    v_cndmask_b32_e64 v1, v1, 0x7ff80000, s0
495; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s0
496; GFX11-NEXT:    ;;#ASMSTART
497; GFX11-NEXT:    ; use v[0:1]
498; GFX11-NEXT:    ;;#ASMEND
499; GFX11-NEXT:    s_setpc_b64 s[30:31]
500;
501; GFX12-LABEL: s_minimum_f64:
502; GFX12:       ; %bb.0:
503; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
504; GFX12-NEXT:    s_wait_expcnt 0x0
505; GFX12-NEXT:    s_wait_samplecnt 0x0
506; GFX12-NEXT:    s_wait_bvhcnt 0x0
507; GFX12-NEXT:    s_wait_kmcnt 0x0
508; GFX12-NEXT:    v_minimum_f64 v[0:1], s[0:1], s[2:3]
509; GFX12-NEXT:    ;;#ASMSTART
510; GFX12-NEXT:    ; use v[0:1]
511; GFX12-NEXT:    ;;#ASMEND
512; GFX12-NEXT:    s_setpc_b64 s[30:31]
513  %op = call double @llvm.minimum.f64(double %src0, double %src1)
514  call void asm sideeffect "; use $0", "s"(double %op)
515  ret void
516}
517
518define <2 x double> @v_minimum_v2f64(<2 x double> %src0, <2 x double> %src1) {
519; GFX7-LABEL: v_minimum_v2f64:
520; GFX7:       ; %bb.0:
521; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
522; GFX7-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
523; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
524; GFX7-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
525; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7]
526; GFX7-NEXT:    v_mov_b32_e32 v3, 0x7ff80000
527; GFX7-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
528; GFX7-NEXT:    v_cndmask_b32_e32 v1, v9, v3, vcc
529; GFX7-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[4:5]
530; GFX7-NEXT:    v_cndmask_b32_e64 v3, v5, v3, s[4:5]
531; GFX7-NEXT:    s_setpc_b64 s[30:31]
532;
533; GFX8-LABEL: v_minimum_v2f64:
534; GFX8:       ; %bb.0:
535; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
536; GFX8-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
537; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
538; GFX8-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
539; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7]
540; GFX8-NEXT:    v_mov_b32_e32 v3, 0x7ff80000
541; GFX8-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
542; GFX8-NEXT:    v_cndmask_b32_e32 v1, v9, v3, vcc
543; GFX8-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[4:5]
544; GFX8-NEXT:    v_cndmask_b32_e64 v3, v5, v3, s[4:5]
545; GFX8-NEXT:    s_setpc_b64 s[30:31]
546;
547; GFX900-LABEL: v_minimum_v2f64:
548; GFX900:       ; %bb.0:
549; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
550; GFX900-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
551; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
552; GFX900-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
553; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7]
554; GFX900-NEXT:    v_mov_b32_e32 v3, 0x7ff80000
555; GFX900-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
556; GFX900-NEXT:    v_cndmask_b32_e32 v1, v9, v3, vcc
557; GFX900-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[4:5]
558; GFX900-NEXT:    v_cndmask_b32_e64 v3, v5, v3, s[4:5]
559; GFX900-NEXT:    s_setpc_b64 s[30:31]
560;
561; GFX950-LABEL: v_minimum_v2f64:
562; GFX950:       ; %bb.0:
563; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
564; GFX950-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
565; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
566; GFX950-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
567; GFX950-NEXT:    s_nop 0
568; GFX950-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
569; GFX950-NEXT:    v_mov_b32_e32 v8, 0x7ff80000
570; GFX950-NEXT:    v_cndmask_b32_e32 v1, v9, v8, vcc
571; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[6:7]
572; GFX950-NEXT:    s_nop 1
573; GFX950-NEXT:    v_cndmask_b32_e64 v2, v4, 0, vcc
574; GFX950-NEXT:    v_cndmask_b32_e32 v3, v5, v8, vcc
575; GFX950-NEXT:    s_setpc_b64 s[30:31]
576;
577; GFX10-LABEL: v_minimum_v2f64:
578; GFX10:       ; %bb.0:
579; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
580; GFX10-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
581; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5]
582; GFX10-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
583; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[6:7]
584; GFX10-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc_lo
585; GFX10-NEXT:    v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo
586; GFX10-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s4
587; GFX10-NEXT:    v_cndmask_b32_e64 v3, v5, 0x7ff80000, s4
588; GFX10-NEXT:    s_setpc_b64 s[30:31]
589;
590; GFX11-LABEL: v_minimum_v2f64:
591; GFX11:       ; %bb.0:
592; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
593; GFX11-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
594; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5]
595; GFX11-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
596; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[6:7]
597; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)
598; GFX11-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc_lo
599; GFX11-NEXT:    v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo
600; GFX11-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s0
601; GFX11-NEXT:    v_cndmask_b32_e64 v3, v5, 0x7ff80000, s0
602; GFX11-NEXT:    s_setpc_b64 s[30:31]
603;
604; GFX12-LABEL: v_minimum_v2f64:
605; GFX12:       ; %bb.0:
606; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
607; GFX12-NEXT:    s_wait_expcnt 0x0
608; GFX12-NEXT:    s_wait_samplecnt 0x0
609; GFX12-NEXT:    s_wait_bvhcnt 0x0
610; GFX12-NEXT:    s_wait_kmcnt 0x0
611; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[4:5]
612; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[6:7]
613; GFX12-NEXT:    s_setpc_b64 s[30:31]
614  %op = call <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1)
615  ret <2 x double> %op
616}
617
618define <2 x double> @v_minimum_v2f64__nnan(<2 x double> %src0, <2 x double> %src1) {
619; GFX7-LABEL: v_minimum_v2f64__nnan:
620; GFX7:       ; %bb.0:
621; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
622; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
623; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
624; GFX7-NEXT:    s_setpc_b64 s[30:31]
625;
626; GFX8-LABEL: v_minimum_v2f64__nnan:
627; GFX8:       ; %bb.0:
628; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
629; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
630; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
631; GFX8-NEXT:    s_setpc_b64 s[30:31]
632;
633; GFX9-LABEL: v_minimum_v2f64__nnan:
634; GFX9:       ; %bb.0:
635; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
636; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
637; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
638; GFX9-NEXT:    s_setpc_b64 s[30:31]
639;
640; GFX10-LABEL: v_minimum_v2f64__nnan:
641; GFX10:       ; %bb.0:
642; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
643; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
644; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
645; GFX10-NEXT:    s_setpc_b64 s[30:31]
646;
647; GFX11-LABEL: v_minimum_v2f64__nnan:
648; GFX11:       ; %bb.0:
649; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
650; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
651; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
652; GFX11-NEXT:    s_setpc_b64 s[30:31]
653;
654; GFX12-LABEL: v_minimum_v2f64__nnan:
655; GFX12:       ; %bb.0:
656; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
657; GFX12-NEXT:    s_wait_expcnt 0x0
658; GFX12-NEXT:    s_wait_samplecnt 0x0
659; GFX12-NEXT:    s_wait_bvhcnt 0x0
660; GFX12-NEXT:    s_wait_kmcnt 0x0
661; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[4:5]
662; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[6:7]
663; GFX12-NEXT:    s_setpc_b64 s[30:31]
664  %op = call nnan <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1)
665  ret <2 x double> %op
666}
667
668define <2 x double> @v_minimum_v2f64__nsz(<2 x double> %src0, <2 x double> %src1) {
669; GFX7-LABEL: v_minimum_v2f64__nsz:
670; GFX7:       ; %bb.0:
671; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
672; GFX7-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
673; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
674; GFX7-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
675; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7]
676; GFX7-NEXT:    v_mov_b32_e32 v3, 0x7ff80000
677; GFX7-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
678; GFX7-NEXT:    v_cndmask_b32_e32 v1, v9, v3, vcc
679; GFX7-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[4:5]
680; GFX7-NEXT:    v_cndmask_b32_e64 v3, v5, v3, s[4:5]
681; GFX7-NEXT:    s_setpc_b64 s[30:31]
682;
683; GFX8-LABEL: v_minimum_v2f64__nsz:
684; GFX8:       ; %bb.0:
685; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
686; GFX8-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
687; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
688; GFX8-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
689; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7]
690; GFX8-NEXT:    v_mov_b32_e32 v3, 0x7ff80000
691; GFX8-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
692; GFX8-NEXT:    v_cndmask_b32_e32 v1, v9, v3, vcc
693; GFX8-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[4:5]
694; GFX8-NEXT:    v_cndmask_b32_e64 v3, v5, v3, s[4:5]
695; GFX8-NEXT:    s_setpc_b64 s[30:31]
696;
697; GFX900-LABEL: v_minimum_v2f64__nsz:
698; GFX900:       ; %bb.0:
699; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
700; GFX900-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
701; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
702; GFX900-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
703; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[6:7]
704; GFX900-NEXT:    v_mov_b32_e32 v3, 0x7ff80000
705; GFX900-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
706; GFX900-NEXT:    v_cndmask_b32_e32 v1, v9, v3, vcc
707; GFX900-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s[4:5]
708; GFX900-NEXT:    v_cndmask_b32_e64 v3, v5, v3, s[4:5]
709; GFX900-NEXT:    s_setpc_b64 s[30:31]
710;
711; GFX950-LABEL: v_minimum_v2f64__nsz:
712; GFX950:       ; %bb.0:
713; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
714; GFX950-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
715; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[4:5]
716; GFX950-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
717; GFX950-NEXT:    s_nop 0
718; GFX950-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc
719; GFX950-NEXT:    v_mov_b32_e32 v8, 0x7ff80000
720; GFX950-NEXT:    v_cndmask_b32_e32 v1, v9, v8, vcc
721; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[6:7]
722; GFX950-NEXT:    s_nop 1
723; GFX950-NEXT:    v_cndmask_b32_e64 v2, v4, 0, vcc
724; GFX950-NEXT:    v_cndmask_b32_e32 v3, v5, v8, vcc
725; GFX950-NEXT:    s_setpc_b64 s[30:31]
726;
727; GFX10-LABEL: v_minimum_v2f64__nsz:
728; GFX10:       ; %bb.0:
729; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
730; GFX10-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
731; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5]
732; GFX10-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
733; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[6:7]
734; GFX10-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc_lo
735; GFX10-NEXT:    v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo
736; GFX10-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s4
737; GFX10-NEXT:    v_cndmask_b32_e64 v3, v5, 0x7ff80000, s4
738; GFX10-NEXT:    s_setpc_b64 s[30:31]
739;
740; GFX11-LABEL: v_minimum_v2f64__nsz:
741; GFX11:       ; %bb.0:
742; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
743; GFX11-NEXT:    v_min_f64 v[8:9], v[0:1], v[4:5]
744; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[4:5]
745; GFX11-NEXT:    v_min_f64 v[4:5], v[2:3], v[6:7]
746; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[6:7]
747; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_4) | instskip(SKIP_1) | instid1(VALU_DEP_3)
748; GFX11-NEXT:    v_cndmask_b32_e64 v0, v8, 0, vcc_lo
749; GFX11-NEXT:    v_cndmask_b32_e64 v1, v9, 0x7ff80000, vcc_lo
750; GFX11-NEXT:    v_cndmask_b32_e64 v2, v4, 0, s0
751; GFX11-NEXT:    v_cndmask_b32_e64 v3, v5, 0x7ff80000, s0
752; GFX11-NEXT:    s_setpc_b64 s[30:31]
753;
754; GFX12-LABEL: v_minimum_v2f64__nsz:
755; GFX12:       ; %bb.0:
756; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
757; GFX12-NEXT:    s_wait_expcnt 0x0
758; GFX12-NEXT:    s_wait_samplecnt 0x0
759; GFX12-NEXT:    s_wait_bvhcnt 0x0
760; GFX12-NEXT:    s_wait_kmcnt 0x0
761; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[4:5]
762; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[6:7]
763; GFX12-NEXT:    s_setpc_b64 s[30:31]
764  %op = call nsz <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1)
765  ret <2 x double> %op
766}
767
768define <2 x double> @v_minimum_v2f64__nnan_nsz(<2 x double> %src0, <2 x double> %src1) {
769; GFX7-LABEL: v_minimum_v2f64__nnan_nsz:
770; GFX7:       ; %bb.0:
771; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
772; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
773; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
774; GFX7-NEXT:    s_setpc_b64 s[30:31]
775;
776; GFX8-LABEL: v_minimum_v2f64__nnan_nsz:
777; GFX8:       ; %bb.0:
778; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
779; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
780; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
781; GFX8-NEXT:    s_setpc_b64 s[30:31]
782;
783; GFX9-LABEL: v_minimum_v2f64__nnan_nsz:
784; GFX9:       ; %bb.0:
785; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
786; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
787; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
788; GFX9-NEXT:    s_setpc_b64 s[30:31]
789;
790; GFX10-LABEL: v_minimum_v2f64__nnan_nsz:
791; GFX10:       ; %bb.0:
792; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
793; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
794; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
795; GFX10-NEXT:    s_setpc_b64 s[30:31]
796;
797; GFX11-LABEL: v_minimum_v2f64__nnan_nsz:
798; GFX11:       ; %bb.0:
799; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
800; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[4:5]
801; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[6:7]
802; GFX11-NEXT:    s_setpc_b64 s[30:31]
803;
804; GFX12-LABEL: v_minimum_v2f64__nnan_nsz:
805; GFX12:       ; %bb.0:
806; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
807; GFX12-NEXT:    s_wait_expcnt 0x0
808; GFX12-NEXT:    s_wait_samplecnt 0x0
809; GFX12-NEXT:    s_wait_bvhcnt 0x0
810; GFX12-NEXT:    s_wait_kmcnt 0x0
811; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[4:5]
812; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[6:7]
813; GFX12-NEXT:    s_setpc_b64 s[30:31]
814  %op = call nnan nsz <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1)
815  ret <2 x double> %op
816}
817
818define void @s_minimum_v2f64(<2 x double> inreg %src0, <2 x double> inreg %src1) {
819; GFX7-LABEL: s_minimum_v2f64:
820; GFX7:       ; %bb.0:
821; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
822; GFX7-NEXT:    v_mov_b32_e32 v0, s22
823; GFX7-NEXT:    v_mov_b32_e32 v4, s20
824; GFX7-NEXT:    v_mov_b32_e32 v1, s23
825; GFX7-NEXT:    v_mov_b32_e32 v5, s21
826; GFX7-NEXT:    v_min_f64 v[2:3], s[18:19], v[0:1]
827; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, s[18:19], v[0:1]
828; GFX7-NEXT:    v_min_f64 v[0:1], s[16:17], v[4:5]
829; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], s[16:17], v[4:5]
830; GFX7-NEXT:    v_mov_b32_e32 v6, 0x7ff80000
831; GFX7-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc
832; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, 0, vcc
833; GFX7-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[4:5]
834; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s[4:5]
835; GFX7-NEXT:    ;;#ASMSTART
836; GFX7-NEXT:    ; use v[0:3]
837; GFX7-NEXT:    ;;#ASMEND
838; GFX7-NEXT:    s_setpc_b64 s[30:31]
839;
840; GFX8-LABEL: s_minimum_v2f64:
841; GFX8:       ; %bb.0:
842; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
843; GFX8-NEXT:    v_mov_b32_e32 v0, s22
844; GFX8-NEXT:    v_mov_b32_e32 v4, s20
845; GFX8-NEXT:    v_mov_b32_e32 v1, s23
846; GFX8-NEXT:    v_mov_b32_e32 v5, s21
847; GFX8-NEXT:    v_min_f64 v[2:3], s[18:19], v[0:1]
848; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, s[18:19], v[0:1]
849; GFX8-NEXT:    v_min_f64 v[0:1], s[16:17], v[4:5]
850; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], s[16:17], v[4:5]
851; GFX8-NEXT:    v_mov_b32_e32 v6, 0x7ff80000
852; GFX8-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc
853; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, 0, vcc
854; GFX8-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[4:5]
855; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s[4:5]
856; GFX8-NEXT:    ;;#ASMSTART
857; GFX8-NEXT:    ; use v[0:3]
858; GFX8-NEXT:    ;;#ASMEND
859; GFX8-NEXT:    s_setpc_b64 s[30:31]
860;
861; GFX900-LABEL: s_minimum_v2f64:
862; GFX900:       ; %bb.0:
863; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
864; GFX900-NEXT:    v_mov_b32_e32 v0, s22
865; GFX900-NEXT:    v_mov_b32_e32 v4, s20
866; GFX900-NEXT:    v_mov_b32_e32 v1, s23
867; GFX900-NEXT:    v_mov_b32_e32 v5, s21
868; GFX900-NEXT:    v_min_f64 v[2:3], s[18:19], v[0:1]
869; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, s[18:19], v[0:1]
870; GFX900-NEXT:    v_min_f64 v[0:1], s[16:17], v[4:5]
871; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], s[16:17], v[4:5]
872; GFX900-NEXT:    v_mov_b32_e32 v6, 0x7ff80000
873; GFX900-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc
874; GFX900-NEXT:    v_cndmask_b32_e64 v2, v2, 0, vcc
875; GFX900-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[4:5]
876; GFX900-NEXT:    v_cndmask_b32_e64 v0, v0, 0, s[4:5]
877; GFX900-NEXT:    ;;#ASMSTART
878; GFX900-NEXT:    ; use v[0:3]
879; GFX900-NEXT:    ;;#ASMEND
880; GFX900-NEXT:    s_setpc_b64 s[30:31]
881;
882; GFX950-LABEL: s_minimum_v2f64:
883; GFX950:       ; %bb.0:
884; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
885; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[18:19]
886; GFX950-NEXT:    v_min_f64 v[2:3], s[2:3], v[0:1]
887; GFX950-NEXT:    v_mov_b32_e32 v6, 0x7ff80000
888; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, s[2:3], v[0:1]
889; GFX950-NEXT:    v_mov_b64_e32 v[0:1], s[16:17]
890; GFX950-NEXT:    v_min_f64 v[4:5], s[0:1], v[0:1]
891; GFX950-NEXT:    v_cndmask_b32_e32 v3, v3, v6, vcc
892; GFX950-NEXT:    v_cndmask_b32_e64 v2, v2, 0, vcc
893; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, s[0:1], v[0:1]
894; GFX950-NEXT:    s_nop 1
895; GFX950-NEXT:    v_cndmask_b32_e32 v1, v5, v6, vcc
896; GFX950-NEXT:    v_cndmask_b32_e64 v0, v4, 0, vcc
897; GFX950-NEXT:    ;;#ASMSTART
898; GFX950-NEXT:    ; use v[0:3]
899; GFX950-NEXT:    ;;#ASMEND
900; GFX950-NEXT:    s_setpc_b64 s[30:31]
901;
902; GFX10-LABEL: s_minimum_v2f64:
903; GFX10:       ; %bb.0:
904; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
905; GFX10-NEXT:    v_min_f64 v[0:1], s[18:19], s[22:23]
906; GFX10-NEXT:    v_cmp_u_f64_e64 s4, s[18:19], s[22:23]
907; GFX10-NEXT:    v_min_f64 v[4:5], s[16:17], s[20:21]
908; GFX10-NEXT:    v_cmp_u_f64_e64 s5, s[16:17], s[20:21]
909; GFX10-NEXT:    v_cndmask_b32_e64 v3, v1, 0x7ff80000, s4
910; GFX10-NEXT:    v_cndmask_b32_e64 v2, v0, 0, s4
911; GFX10-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, s5
912; GFX10-NEXT:    v_cndmask_b32_e64 v0, v4, 0, s5
913; GFX10-NEXT:    ;;#ASMSTART
914; GFX10-NEXT:    ; use v[0:3]
915; GFX10-NEXT:    ;;#ASMEND
916; GFX10-NEXT:    s_setpc_b64 s[30:31]
917;
918; GFX11-LABEL: s_minimum_v2f64:
919; GFX11:       ; %bb.0:
920; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
921; GFX11-NEXT:    v_min_f64 v[0:1], s[2:3], s[18:19]
922; GFX11-NEXT:    v_cmp_u_f64_e64 s2, s[2:3], s[18:19]
923; GFX11-NEXT:    v_min_f64 v[4:5], s[0:1], s[16:17]
924; GFX11-NEXT:    v_cmp_u_f64_e64 s0, s[0:1], s[16:17]
925; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_3) | instskip(SKIP_1) | instid1(VALU_DEP_3)
926; GFX11-NEXT:    v_cndmask_b32_e64 v3, v1, 0x7ff80000, s2
927; GFX11-NEXT:    v_cndmask_b32_e64 v2, v0, 0, s2
928; GFX11-NEXT:    v_cndmask_b32_e64 v1, v5, 0x7ff80000, s0
929; GFX11-NEXT:    v_cndmask_b32_e64 v0, v4, 0, s0
930; GFX11-NEXT:    ;;#ASMSTART
931; GFX11-NEXT:    ; use v[0:3]
932; GFX11-NEXT:    ;;#ASMEND
933; GFX11-NEXT:    s_setpc_b64 s[30:31]
934;
935; GFX12-LABEL: s_minimum_v2f64:
936; GFX12:       ; %bb.0:
937; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
938; GFX12-NEXT:    s_wait_expcnt 0x0
939; GFX12-NEXT:    s_wait_samplecnt 0x0
940; GFX12-NEXT:    s_wait_bvhcnt 0x0
941; GFX12-NEXT:    s_wait_kmcnt 0x0
942; GFX12-NEXT:    v_minimum_f64 v[2:3], s[2:3], s[18:19]
943; GFX12-NEXT:    v_minimum_f64 v[0:1], s[0:1], s[16:17]
944; GFX12-NEXT:    ;;#ASMSTART
945; GFX12-NEXT:    ; use v[0:3]
946; GFX12-NEXT:    ;;#ASMEND
947; GFX12-NEXT:    s_setpc_b64 s[30:31]
948  %op = call <2 x double> @llvm.minimum.v2f64(<2 x double> %src0, <2 x double> %src1)
949  call void asm sideeffect "; use $0", "s"(<2 x double> %op)
950  ret void
951}
952
953define <3 x double> @v_minimum_v3f64(<3 x double> %src0, <3 x double> %src1) {
954; GFX7-LABEL: v_minimum_v3f64:
955; GFX7:       ; %bb.0:
956; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
957; GFX7-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
958; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
959; GFX7-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
960; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9]
961; GFX7-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
962; GFX7-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11]
963; GFX7-NEXT:    v_mov_b32_e32 v5, 0x7ff80000
964; GFX7-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
965; GFX7-NEXT:    v_cndmask_b32_e32 v1, v13, v5, vcc
966; GFX7-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s[4:5]
967; GFX7-NEXT:    v_cndmask_b32_e64 v3, v7, v5, s[4:5]
968; GFX7-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s[6:7]
969; GFX7-NEXT:    v_cndmask_b32_e64 v5, v9, v5, s[6:7]
970; GFX7-NEXT:    s_setpc_b64 s[30:31]
971;
972; GFX8-LABEL: v_minimum_v3f64:
973; GFX8:       ; %bb.0:
974; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
975; GFX8-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
976; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
977; GFX8-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
978; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9]
979; GFX8-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
980; GFX8-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11]
981; GFX8-NEXT:    v_mov_b32_e32 v5, 0x7ff80000
982; GFX8-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
983; GFX8-NEXT:    v_cndmask_b32_e32 v1, v13, v5, vcc
984; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s[4:5]
985; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v5, s[4:5]
986; GFX8-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s[6:7]
987; GFX8-NEXT:    v_cndmask_b32_e64 v5, v9, v5, s[6:7]
988; GFX8-NEXT:    s_setpc_b64 s[30:31]
989;
990; GFX900-LABEL: v_minimum_v3f64:
991; GFX900:       ; %bb.0:
992; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
993; GFX900-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
994; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
995; GFX900-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
996; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9]
997; GFX900-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
998; GFX900-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11]
999; GFX900-NEXT:    v_mov_b32_e32 v5, 0x7ff80000
1000; GFX900-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
1001; GFX900-NEXT:    v_cndmask_b32_e32 v1, v13, v5, vcc
1002; GFX900-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s[4:5]
1003; GFX900-NEXT:    v_cndmask_b32_e64 v3, v7, v5, s[4:5]
1004; GFX900-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s[6:7]
1005; GFX900-NEXT:    v_cndmask_b32_e64 v5, v9, v5, s[6:7]
1006; GFX900-NEXT:    s_setpc_b64 s[30:31]
1007;
1008; GFX950-LABEL: v_minimum_v3f64:
1009; GFX950:       ; %bb.0:
1010; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1011; GFX950-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1012; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
1013; GFX950-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1014; GFX950-NEXT:    s_nop 0
1015; GFX950-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
1016; GFX950-NEXT:    v_mov_b32_e32 v12, 0x7ff80000
1017; GFX950-NEXT:    v_cndmask_b32_e32 v1, v13, v12, vcc
1018; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[8:9]
1019; GFX950-NEXT:    s_nop 1
1020; GFX950-NEXT:    v_cndmask_b32_e64 v2, v6, 0, vcc
1021; GFX950-NEXT:    v_cndmask_b32_e32 v3, v7, v12, vcc
1022; GFX950-NEXT:    v_min_f64 v[6:7], v[4:5], v[10:11]
1023; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[4:5], v[10:11]
1024; GFX950-NEXT:    s_nop 1
1025; GFX950-NEXT:    v_cndmask_b32_e64 v4, v6, 0, vcc
1026; GFX950-NEXT:    v_cndmask_b32_e32 v5, v7, v12, vcc
1027; GFX950-NEXT:    s_setpc_b64 s[30:31]
1028;
1029; GFX10-LABEL: v_minimum_v3f64:
1030; GFX10:       ; %bb.0:
1031; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1032; GFX10-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1033; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7]
1034; GFX10-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1035; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[8:9]
1036; GFX10-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1037; GFX10-NEXT:    v_cmp_u_f64_e64 s5, v[4:5], v[10:11]
1038; GFX10-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc_lo
1039; GFX10-NEXT:    v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo
1040; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s4
1041; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, 0x7ff80000, s4
1042; GFX10-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s5
1043; GFX10-NEXT:    v_cndmask_b32_e64 v5, v9, 0x7ff80000, s5
1044; GFX10-NEXT:    s_setpc_b64 s[30:31]
1045;
1046; GFX11-LABEL: v_minimum_v3f64:
1047; GFX11:       ; %bb.0:
1048; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1049; GFX11-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1050; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7]
1051; GFX11-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1052; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[8:9]
1053; GFX11-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1054; GFX11-NEXT:    v_cmp_u_f64_e64 s1, v[4:5], v[10:11]
1055; GFX11-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc_lo
1056; GFX11-NEXT:    v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo
1057; GFX11-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s0
1058; GFX11-NEXT:    v_cndmask_b32_e64 v3, v7, 0x7ff80000, s0
1059; GFX11-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s1
1060; GFX11-NEXT:    v_cndmask_b32_e64 v5, v9, 0x7ff80000, s1
1061; GFX11-NEXT:    s_setpc_b64 s[30:31]
1062;
1063; GFX12-LABEL: v_minimum_v3f64:
1064; GFX12:       ; %bb.0:
1065; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1066; GFX12-NEXT:    s_wait_expcnt 0x0
1067; GFX12-NEXT:    s_wait_samplecnt 0x0
1068; GFX12-NEXT:    s_wait_bvhcnt 0x0
1069; GFX12-NEXT:    s_wait_kmcnt 0x0
1070; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[6:7]
1071; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[8:9]
1072; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[10:11]
1073; GFX12-NEXT:    s_setpc_b64 s[30:31]
1074  %op = call <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1)
1075  ret <3 x double> %op
1076}
1077
1078define <3 x double> @v_minimum_v3f64__nnan(<3 x double> %src0, <3 x double> %src1) {
1079; GFX7-LABEL: v_minimum_v3f64__nnan:
1080; GFX7:       ; %bb.0:
1081; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1082; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1083; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1084; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1085; GFX7-NEXT:    s_setpc_b64 s[30:31]
1086;
1087; GFX8-LABEL: v_minimum_v3f64__nnan:
1088; GFX8:       ; %bb.0:
1089; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1090; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1091; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1092; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1093; GFX8-NEXT:    s_setpc_b64 s[30:31]
1094;
1095; GFX9-LABEL: v_minimum_v3f64__nnan:
1096; GFX9:       ; %bb.0:
1097; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1098; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1099; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1100; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1101; GFX9-NEXT:    s_setpc_b64 s[30:31]
1102;
1103; GFX10-LABEL: v_minimum_v3f64__nnan:
1104; GFX10:       ; %bb.0:
1105; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1106; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1107; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1108; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1109; GFX10-NEXT:    s_setpc_b64 s[30:31]
1110;
1111; GFX11-LABEL: v_minimum_v3f64__nnan:
1112; GFX11:       ; %bb.0:
1113; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1114; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1115; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1116; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1117; GFX11-NEXT:    s_setpc_b64 s[30:31]
1118;
1119; GFX12-LABEL: v_minimum_v3f64__nnan:
1120; GFX12:       ; %bb.0:
1121; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1122; GFX12-NEXT:    s_wait_expcnt 0x0
1123; GFX12-NEXT:    s_wait_samplecnt 0x0
1124; GFX12-NEXT:    s_wait_bvhcnt 0x0
1125; GFX12-NEXT:    s_wait_kmcnt 0x0
1126; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[6:7]
1127; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[8:9]
1128; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[10:11]
1129; GFX12-NEXT:    s_setpc_b64 s[30:31]
1130  %op = call nnan <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1)
1131  ret <3 x double> %op
1132}
1133
1134define <3 x double> @v_minimum_v3f64__nsz(<3 x double> %src0, <3 x double> %src1) {
1135; GFX7-LABEL: v_minimum_v3f64__nsz:
1136; GFX7:       ; %bb.0:
1137; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1138; GFX7-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1139; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
1140; GFX7-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1141; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9]
1142; GFX7-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1143; GFX7-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11]
1144; GFX7-NEXT:    v_mov_b32_e32 v5, 0x7ff80000
1145; GFX7-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
1146; GFX7-NEXT:    v_cndmask_b32_e32 v1, v13, v5, vcc
1147; GFX7-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s[4:5]
1148; GFX7-NEXT:    v_cndmask_b32_e64 v3, v7, v5, s[4:5]
1149; GFX7-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s[6:7]
1150; GFX7-NEXT:    v_cndmask_b32_e64 v5, v9, v5, s[6:7]
1151; GFX7-NEXT:    s_setpc_b64 s[30:31]
1152;
1153; GFX8-LABEL: v_minimum_v3f64__nsz:
1154; GFX8:       ; %bb.0:
1155; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1156; GFX8-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1157; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
1158; GFX8-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1159; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9]
1160; GFX8-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1161; GFX8-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11]
1162; GFX8-NEXT:    v_mov_b32_e32 v5, 0x7ff80000
1163; GFX8-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
1164; GFX8-NEXT:    v_cndmask_b32_e32 v1, v13, v5, vcc
1165; GFX8-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s[4:5]
1166; GFX8-NEXT:    v_cndmask_b32_e64 v3, v7, v5, s[4:5]
1167; GFX8-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s[6:7]
1168; GFX8-NEXT:    v_cndmask_b32_e64 v5, v9, v5, s[6:7]
1169; GFX8-NEXT:    s_setpc_b64 s[30:31]
1170;
1171; GFX900-LABEL: v_minimum_v3f64__nsz:
1172; GFX900:       ; %bb.0:
1173; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1174; GFX900-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1175; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
1176; GFX900-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1177; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[8:9]
1178; GFX900-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1179; GFX900-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[10:11]
1180; GFX900-NEXT:    v_mov_b32_e32 v5, 0x7ff80000
1181; GFX900-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
1182; GFX900-NEXT:    v_cndmask_b32_e32 v1, v13, v5, vcc
1183; GFX900-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s[4:5]
1184; GFX900-NEXT:    v_cndmask_b32_e64 v3, v7, v5, s[4:5]
1185; GFX900-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s[6:7]
1186; GFX900-NEXT:    v_cndmask_b32_e64 v5, v9, v5, s[6:7]
1187; GFX900-NEXT:    s_setpc_b64 s[30:31]
1188;
1189; GFX950-LABEL: v_minimum_v3f64__nsz:
1190; GFX950:       ; %bb.0:
1191; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1192; GFX950-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1193; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[6:7]
1194; GFX950-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1195; GFX950-NEXT:    s_nop 0
1196; GFX950-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc
1197; GFX950-NEXT:    v_mov_b32_e32 v12, 0x7ff80000
1198; GFX950-NEXT:    v_cndmask_b32_e32 v1, v13, v12, vcc
1199; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[8:9]
1200; GFX950-NEXT:    s_nop 1
1201; GFX950-NEXT:    v_cndmask_b32_e64 v2, v6, 0, vcc
1202; GFX950-NEXT:    v_cndmask_b32_e32 v3, v7, v12, vcc
1203; GFX950-NEXT:    v_min_f64 v[6:7], v[4:5], v[10:11]
1204; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[4:5], v[10:11]
1205; GFX950-NEXT:    s_nop 1
1206; GFX950-NEXT:    v_cndmask_b32_e64 v4, v6, 0, vcc
1207; GFX950-NEXT:    v_cndmask_b32_e32 v5, v7, v12, vcc
1208; GFX950-NEXT:    s_setpc_b64 s[30:31]
1209;
1210; GFX10-LABEL: v_minimum_v3f64__nsz:
1211; GFX10:       ; %bb.0:
1212; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1213; GFX10-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1214; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7]
1215; GFX10-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1216; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[8:9]
1217; GFX10-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1218; GFX10-NEXT:    v_cmp_u_f64_e64 s5, v[4:5], v[10:11]
1219; GFX10-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc_lo
1220; GFX10-NEXT:    v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo
1221; GFX10-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s4
1222; GFX10-NEXT:    v_cndmask_b32_e64 v3, v7, 0x7ff80000, s4
1223; GFX10-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s5
1224; GFX10-NEXT:    v_cndmask_b32_e64 v5, v9, 0x7ff80000, s5
1225; GFX10-NEXT:    s_setpc_b64 s[30:31]
1226;
1227; GFX11-LABEL: v_minimum_v3f64__nsz:
1228; GFX11:       ; %bb.0:
1229; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1230; GFX11-NEXT:    v_min_f64 v[12:13], v[0:1], v[6:7]
1231; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[6:7]
1232; GFX11-NEXT:    v_min_f64 v[6:7], v[2:3], v[8:9]
1233; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[8:9]
1234; GFX11-NEXT:    v_min_f64 v[8:9], v[4:5], v[10:11]
1235; GFX11-NEXT:    v_cmp_u_f64_e64 s1, v[4:5], v[10:11]
1236; GFX11-NEXT:    v_cndmask_b32_e64 v0, v12, 0, vcc_lo
1237; GFX11-NEXT:    v_cndmask_b32_e64 v1, v13, 0x7ff80000, vcc_lo
1238; GFX11-NEXT:    v_cndmask_b32_e64 v2, v6, 0, s0
1239; GFX11-NEXT:    v_cndmask_b32_e64 v3, v7, 0x7ff80000, s0
1240; GFX11-NEXT:    v_cndmask_b32_e64 v4, v8, 0, s1
1241; GFX11-NEXT:    v_cndmask_b32_e64 v5, v9, 0x7ff80000, s1
1242; GFX11-NEXT:    s_setpc_b64 s[30:31]
1243;
1244; GFX12-LABEL: v_minimum_v3f64__nsz:
1245; GFX12:       ; %bb.0:
1246; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1247; GFX12-NEXT:    s_wait_expcnt 0x0
1248; GFX12-NEXT:    s_wait_samplecnt 0x0
1249; GFX12-NEXT:    s_wait_bvhcnt 0x0
1250; GFX12-NEXT:    s_wait_kmcnt 0x0
1251; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[6:7]
1252; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[8:9]
1253; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[10:11]
1254; GFX12-NEXT:    s_setpc_b64 s[30:31]
1255  %op = call nsz <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1)
1256  ret <3 x double> %op
1257}
1258
1259define <3 x double> @v_minimum_v3f64__nnan_nsz(<3 x double> %src0, <3 x double> %src1) {
1260; GFX7-LABEL: v_minimum_v3f64__nnan_nsz:
1261; GFX7:       ; %bb.0:
1262; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1263; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1264; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1265; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1266; GFX7-NEXT:    s_setpc_b64 s[30:31]
1267;
1268; GFX8-LABEL: v_minimum_v3f64__nnan_nsz:
1269; GFX8:       ; %bb.0:
1270; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1271; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1272; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1273; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1274; GFX8-NEXT:    s_setpc_b64 s[30:31]
1275;
1276; GFX9-LABEL: v_minimum_v3f64__nnan_nsz:
1277; GFX9:       ; %bb.0:
1278; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1279; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1280; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1281; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1282; GFX9-NEXT:    s_setpc_b64 s[30:31]
1283;
1284; GFX10-LABEL: v_minimum_v3f64__nnan_nsz:
1285; GFX10:       ; %bb.0:
1286; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1287; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1288; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1289; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1290; GFX10-NEXT:    s_setpc_b64 s[30:31]
1291;
1292; GFX11-LABEL: v_minimum_v3f64__nnan_nsz:
1293; GFX11:       ; %bb.0:
1294; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1295; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[6:7]
1296; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[8:9]
1297; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[10:11]
1298; GFX11-NEXT:    s_setpc_b64 s[30:31]
1299;
1300; GFX12-LABEL: v_minimum_v3f64__nnan_nsz:
1301; GFX12:       ; %bb.0:
1302; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1303; GFX12-NEXT:    s_wait_expcnt 0x0
1304; GFX12-NEXT:    s_wait_samplecnt 0x0
1305; GFX12-NEXT:    s_wait_bvhcnt 0x0
1306; GFX12-NEXT:    s_wait_kmcnt 0x0
1307; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[6:7]
1308; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[8:9]
1309; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[10:11]
1310; GFX12-NEXT:    s_setpc_b64 s[30:31]
1311  %op = call nnan nsz <3 x double> @llvm.minimum.v3f64(<3 x double> %src0, <3 x double> %src1)
1312  ret <3 x double> %op
1313}
1314
1315define <4 x double> @v_minimum_v4f64(<4 x double> %src0, <4 x double> %src1) {
1316; GFX7-LABEL: v_minimum_v4f64:
1317; GFX7:       ; %bb.0:
1318; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1319; GFX7-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1320; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1321; GFX7-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1322; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11]
1323; GFX7-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1324; GFX7-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13]
1325; GFX7-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1326; GFX7-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15]
1327; GFX7-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
1328; GFX7-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1329; GFX7-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
1330; GFX7-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[4:5]
1331; GFX7-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[4:5]
1332; GFX7-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[6:7]
1333; GFX7-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[6:7]
1334; GFX7-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[8:9]
1335; GFX7-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[8:9]
1336; GFX7-NEXT:    s_setpc_b64 s[30:31]
1337;
1338; GFX8-LABEL: v_minimum_v4f64:
1339; GFX8:       ; %bb.0:
1340; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1341; GFX8-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1342; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1343; GFX8-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1344; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11]
1345; GFX8-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1346; GFX8-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13]
1347; GFX8-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1348; GFX8-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15]
1349; GFX8-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
1350; GFX8-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1351; GFX8-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
1352; GFX8-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[4:5]
1353; GFX8-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[4:5]
1354; GFX8-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[6:7]
1355; GFX8-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[6:7]
1356; GFX8-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[8:9]
1357; GFX8-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[8:9]
1358; GFX8-NEXT:    s_setpc_b64 s[30:31]
1359;
1360; GFX900-LABEL: v_minimum_v4f64:
1361; GFX900:       ; %bb.0:
1362; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1363; GFX900-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1364; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1365; GFX900-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1366; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11]
1367; GFX900-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1368; GFX900-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13]
1369; GFX900-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1370; GFX900-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15]
1371; GFX900-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
1372; GFX900-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1373; GFX900-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
1374; GFX900-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[4:5]
1375; GFX900-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[4:5]
1376; GFX900-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[6:7]
1377; GFX900-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[6:7]
1378; GFX900-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[8:9]
1379; GFX900-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[8:9]
1380; GFX900-NEXT:    s_setpc_b64 s[30:31]
1381;
1382; GFX950-LABEL: v_minimum_v4f64:
1383; GFX950:       ; %bb.0:
1384; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1385; GFX950-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1386; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1387; GFX950-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1388; GFX950-NEXT:    s_nop 0
1389; GFX950-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1390; GFX950-NEXT:    v_mov_b32_e32 v16, 0x7ff80000
1391; GFX950-NEXT:    v_cndmask_b32_e32 v1, v17, v16, vcc
1392; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[10:11]
1393; GFX950-NEXT:    s_nop 1
1394; GFX950-NEXT:    v_cndmask_b32_e64 v2, v8, 0, vcc
1395; GFX950-NEXT:    v_cndmask_b32_e32 v3, v9, v16, vcc
1396; GFX950-NEXT:    v_min_f64 v[8:9], v[4:5], v[12:13]
1397; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[4:5], v[12:13]
1398; GFX950-NEXT:    s_nop 1
1399; GFX950-NEXT:    v_cndmask_b32_e64 v4, v8, 0, vcc
1400; GFX950-NEXT:    v_cndmask_b32_e32 v5, v9, v16, vcc
1401; GFX950-NEXT:    v_min_f64 v[8:9], v[6:7], v[14:15]
1402; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[6:7], v[14:15]
1403; GFX950-NEXT:    s_nop 1
1404; GFX950-NEXT:    v_cndmask_b32_e64 v6, v8, 0, vcc
1405; GFX950-NEXT:    v_cndmask_b32_e32 v7, v9, v16, vcc
1406; GFX950-NEXT:    s_setpc_b64 s[30:31]
1407;
1408; GFX10-LABEL: v_minimum_v4f64:
1409; GFX10:       ; %bb.0:
1410; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1411; GFX10-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1412; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9]
1413; GFX10-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1414; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[10:11]
1415; GFX10-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1416; GFX10-NEXT:    v_cmp_u_f64_e64 s5, v[4:5], v[12:13]
1417; GFX10-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1418; GFX10-NEXT:    v_cmp_u_f64_e64 s6, v[6:7], v[14:15]
1419; GFX10-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc_lo
1420; GFX10-NEXT:    v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo
1421; GFX10-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s4
1422; GFX10-NEXT:    v_cndmask_b32_e64 v3, v9, 0x7ff80000, s4
1423; GFX10-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s5
1424; GFX10-NEXT:    v_cndmask_b32_e64 v5, v11, 0x7ff80000, s5
1425; GFX10-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s6
1426; GFX10-NEXT:    v_cndmask_b32_e64 v7, v13, 0x7ff80000, s6
1427; GFX10-NEXT:    s_setpc_b64 s[30:31]
1428;
1429; GFX11-LABEL: v_minimum_v4f64:
1430; GFX11:       ; %bb.0:
1431; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1432; GFX11-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1433; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9]
1434; GFX11-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1435; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[10:11]
1436; GFX11-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1437; GFX11-NEXT:    v_cmp_u_f64_e64 s1, v[4:5], v[12:13]
1438; GFX11-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1439; GFX11-NEXT:    v_cmp_u_f64_e64 s2, v[6:7], v[14:15]
1440; GFX11-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc_lo
1441; GFX11-NEXT:    v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo
1442; GFX11-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s0
1443; GFX11-NEXT:    v_cndmask_b32_e64 v3, v9, 0x7ff80000, s0
1444; GFX11-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s1
1445; GFX11-NEXT:    v_cndmask_b32_e64 v5, v11, 0x7ff80000, s1
1446; GFX11-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s2
1447; GFX11-NEXT:    v_cndmask_b32_e64 v7, v13, 0x7ff80000, s2
1448; GFX11-NEXT:    s_setpc_b64 s[30:31]
1449;
1450; GFX12-LABEL: v_minimum_v4f64:
1451; GFX12:       ; %bb.0:
1452; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1453; GFX12-NEXT:    s_wait_expcnt 0x0
1454; GFX12-NEXT:    s_wait_samplecnt 0x0
1455; GFX12-NEXT:    s_wait_bvhcnt 0x0
1456; GFX12-NEXT:    s_wait_kmcnt 0x0
1457; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[8:9]
1458; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[10:11]
1459; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[12:13]
1460; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[14:15]
1461; GFX12-NEXT:    s_setpc_b64 s[30:31]
1462  %op = call <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1)
1463  ret <4 x double> %op
1464}
1465
1466define <4 x double> @v_minimum_v4f64__nnan(<4 x double> %src0, <4 x double> %src1) {
1467; GFX7-LABEL: v_minimum_v4f64__nnan:
1468; GFX7:       ; %bb.0:
1469; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1470; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1471; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1472; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1473; GFX7-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1474; GFX7-NEXT:    s_setpc_b64 s[30:31]
1475;
1476; GFX8-LABEL: v_minimum_v4f64__nnan:
1477; GFX8:       ; %bb.0:
1478; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1479; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1480; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1481; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1482; GFX8-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1483; GFX8-NEXT:    s_setpc_b64 s[30:31]
1484;
1485; GFX9-LABEL: v_minimum_v4f64__nnan:
1486; GFX9:       ; %bb.0:
1487; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1488; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1489; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1490; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1491; GFX9-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1492; GFX9-NEXT:    s_setpc_b64 s[30:31]
1493;
1494; GFX10-LABEL: v_minimum_v4f64__nnan:
1495; GFX10:       ; %bb.0:
1496; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1497; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1498; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1499; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1500; GFX10-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1501; GFX10-NEXT:    s_setpc_b64 s[30:31]
1502;
1503; GFX11-LABEL: v_minimum_v4f64__nnan:
1504; GFX11:       ; %bb.0:
1505; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1506; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1507; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1508; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1509; GFX11-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1510; GFX11-NEXT:    s_setpc_b64 s[30:31]
1511;
1512; GFX12-LABEL: v_minimum_v4f64__nnan:
1513; GFX12:       ; %bb.0:
1514; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1515; GFX12-NEXT:    s_wait_expcnt 0x0
1516; GFX12-NEXT:    s_wait_samplecnt 0x0
1517; GFX12-NEXT:    s_wait_bvhcnt 0x0
1518; GFX12-NEXT:    s_wait_kmcnt 0x0
1519; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[8:9]
1520; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[10:11]
1521; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[12:13]
1522; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[14:15]
1523; GFX12-NEXT:    s_setpc_b64 s[30:31]
1524  %op = call nnan <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1)
1525  ret <4 x double> %op
1526}
1527
1528define <4 x double> @v_minimum_v4f64__nsz(<4 x double> %src0, <4 x double> %src1) {
1529; GFX7-LABEL: v_minimum_v4f64__nsz:
1530; GFX7:       ; %bb.0:
1531; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1532; GFX7-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1533; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1534; GFX7-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1535; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11]
1536; GFX7-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1537; GFX7-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13]
1538; GFX7-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1539; GFX7-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15]
1540; GFX7-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
1541; GFX7-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1542; GFX7-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
1543; GFX7-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[4:5]
1544; GFX7-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[4:5]
1545; GFX7-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[6:7]
1546; GFX7-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[6:7]
1547; GFX7-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[8:9]
1548; GFX7-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[8:9]
1549; GFX7-NEXT:    s_setpc_b64 s[30:31]
1550;
1551; GFX8-LABEL: v_minimum_v4f64__nsz:
1552; GFX8:       ; %bb.0:
1553; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1554; GFX8-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1555; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1556; GFX8-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1557; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11]
1558; GFX8-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1559; GFX8-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13]
1560; GFX8-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1561; GFX8-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15]
1562; GFX8-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
1563; GFX8-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1564; GFX8-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
1565; GFX8-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[4:5]
1566; GFX8-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[4:5]
1567; GFX8-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[6:7]
1568; GFX8-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[6:7]
1569; GFX8-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[8:9]
1570; GFX8-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[8:9]
1571; GFX8-NEXT:    s_setpc_b64 s[30:31]
1572;
1573; GFX900-LABEL: v_minimum_v4f64__nsz:
1574; GFX900:       ; %bb.0:
1575; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1576; GFX900-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1577; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1578; GFX900-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1579; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[10:11]
1580; GFX900-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1581; GFX900-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[12:13]
1582; GFX900-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1583; GFX900-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[14:15]
1584; GFX900-NEXT:    v_mov_b32_e32 v7, 0x7ff80000
1585; GFX900-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1586; GFX900-NEXT:    v_cndmask_b32_e32 v1, v17, v7, vcc
1587; GFX900-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s[4:5]
1588; GFX900-NEXT:    v_cndmask_b32_e64 v3, v9, v7, s[4:5]
1589; GFX900-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s[6:7]
1590; GFX900-NEXT:    v_cndmask_b32_e64 v5, v11, v7, s[6:7]
1591; GFX900-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s[8:9]
1592; GFX900-NEXT:    v_cndmask_b32_e64 v7, v13, v7, s[8:9]
1593; GFX900-NEXT:    s_setpc_b64 s[30:31]
1594;
1595; GFX950-LABEL: v_minimum_v4f64__nsz:
1596; GFX950:       ; %bb.0:
1597; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1598; GFX950-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1599; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[8:9]
1600; GFX950-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1601; GFX950-NEXT:    s_nop 0
1602; GFX950-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc
1603; GFX950-NEXT:    v_mov_b32_e32 v16, 0x7ff80000
1604; GFX950-NEXT:    v_cndmask_b32_e32 v1, v17, v16, vcc
1605; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[10:11]
1606; GFX950-NEXT:    s_nop 1
1607; GFX950-NEXT:    v_cndmask_b32_e64 v2, v8, 0, vcc
1608; GFX950-NEXT:    v_cndmask_b32_e32 v3, v9, v16, vcc
1609; GFX950-NEXT:    v_min_f64 v[8:9], v[4:5], v[12:13]
1610; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[4:5], v[12:13]
1611; GFX950-NEXT:    s_nop 1
1612; GFX950-NEXT:    v_cndmask_b32_e64 v4, v8, 0, vcc
1613; GFX950-NEXT:    v_cndmask_b32_e32 v5, v9, v16, vcc
1614; GFX950-NEXT:    v_min_f64 v[8:9], v[6:7], v[14:15]
1615; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[6:7], v[14:15]
1616; GFX950-NEXT:    s_nop 1
1617; GFX950-NEXT:    v_cndmask_b32_e64 v6, v8, 0, vcc
1618; GFX950-NEXT:    v_cndmask_b32_e32 v7, v9, v16, vcc
1619; GFX950-NEXT:    s_setpc_b64 s[30:31]
1620;
1621; GFX10-LABEL: v_minimum_v4f64__nsz:
1622; GFX10:       ; %bb.0:
1623; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1624; GFX10-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1625; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9]
1626; GFX10-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1627; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[10:11]
1628; GFX10-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1629; GFX10-NEXT:    v_cmp_u_f64_e64 s5, v[4:5], v[12:13]
1630; GFX10-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1631; GFX10-NEXT:    v_cmp_u_f64_e64 s6, v[6:7], v[14:15]
1632; GFX10-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc_lo
1633; GFX10-NEXT:    v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo
1634; GFX10-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s4
1635; GFX10-NEXT:    v_cndmask_b32_e64 v3, v9, 0x7ff80000, s4
1636; GFX10-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s5
1637; GFX10-NEXT:    v_cndmask_b32_e64 v5, v11, 0x7ff80000, s5
1638; GFX10-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s6
1639; GFX10-NEXT:    v_cndmask_b32_e64 v7, v13, 0x7ff80000, s6
1640; GFX10-NEXT:    s_setpc_b64 s[30:31]
1641;
1642; GFX11-LABEL: v_minimum_v4f64__nsz:
1643; GFX11:       ; %bb.0:
1644; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1645; GFX11-NEXT:    v_min_f64 v[16:17], v[0:1], v[8:9]
1646; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[8:9]
1647; GFX11-NEXT:    v_min_f64 v[8:9], v[2:3], v[10:11]
1648; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[10:11]
1649; GFX11-NEXT:    v_min_f64 v[10:11], v[4:5], v[12:13]
1650; GFX11-NEXT:    v_cmp_u_f64_e64 s1, v[4:5], v[12:13]
1651; GFX11-NEXT:    v_min_f64 v[12:13], v[6:7], v[14:15]
1652; GFX11-NEXT:    v_cmp_u_f64_e64 s2, v[6:7], v[14:15]
1653; GFX11-NEXT:    v_cndmask_b32_e64 v0, v16, 0, vcc_lo
1654; GFX11-NEXT:    v_cndmask_b32_e64 v1, v17, 0x7ff80000, vcc_lo
1655; GFX11-NEXT:    v_cndmask_b32_e64 v2, v8, 0, s0
1656; GFX11-NEXT:    v_cndmask_b32_e64 v3, v9, 0x7ff80000, s0
1657; GFX11-NEXT:    v_cndmask_b32_e64 v4, v10, 0, s1
1658; GFX11-NEXT:    v_cndmask_b32_e64 v5, v11, 0x7ff80000, s1
1659; GFX11-NEXT:    v_cndmask_b32_e64 v6, v12, 0, s2
1660; GFX11-NEXT:    v_cndmask_b32_e64 v7, v13, 0x7ff80000, s2
1661; GFX11-NEXT:    s_setpc_b64 s[30:31]
1662;
1663; GFX12-LABEL: v_minimum_v4f64__nsz:
1664; GFX12:       ; %bb.0:
1665; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1666; GFX12-NEXT:    s_wait_expcnt 0x0
1667; GFX12-NEXT:    s_wait_samplecnt 0x0
1668; GFX12-NEXT:    s_wait_bvhcnt 0x0
1669; GFX12-NEXT:    s_wait_kmcnt 0x0
1670; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[8:9]
1671; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[10:11]
1672; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[12:13]
1673; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[14:15]
1674; GFX12-NEXT:    s_setpc_b64 s[30:31]
1675  %op = call nsz <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1)
1676  ret <4 x double> %op
1677}
1678
1679define <4 x double> @v_minimum_v4f64__nnan_nsz(<4 x double> %src0, <4 x double> %src1) {
1680; GFX7-LABEL: v_minimum_v4f64__nnan_nsz:
1681; GFX7:       ; %bb.0:
1682; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1683; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1684; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1685; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1686; GFX7-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1687; GFX7-NEXT:    s_setpc_b64 s[30:31]
1688;
1689; GFX8-LABEL: v_minimum_v4f64__nnan_nsz:
1690; GFX8:       ; %bb.0:
1691; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1692; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1693; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1694; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1695; GFX8-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1696; GFX8-NEXT:    s_setpc_b64 s[30:31]
1697;
1698; GFX9-LABEL: v_minimum_v4f64__nnan_nsz:
1699; GFX9:       ; %bb.0:
1700; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1701; GFX9-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1702; GFX9-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1703; GFX9-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1704; GFX9-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1705; GFX9-NEXT:    s_setpc_b64 s[30:31]
1706;
1707; GFX10-LABEL: v_minimum_v4f64__nnan_nsz:
1708; GFX10:       ; %bb.0:
1709; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1710; GFX10-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1711; GFX10-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1712; GFX10-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1713; GFX10-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1714; GFX10-NEXT:    s_setpc_b64 s[30:31]
1715;
1716; GFX11-LABEL: v_minimum_v4f64__nnan_nsz:
1717; GFX11:       ; %bb.0:
1718; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1719; GFX11-NEXT:    v_min_f64 v[0:1], v[0:1], v[8:9]
1720; GFX11-NEXT:    v_min_f64 v[2:3], v[2:3], v[10:11]
1721; GFX11-NEXT:    v_min_f64 v[4:5], v[4:5], v[12:13]
1722; GFX11-NEXT:    v_min_f64 v[6:7], v[6:7], v[14:15]
1723; GFX11-NEXT:    s_setpc_b64 s[30:31]
1724;
1725; GFX12-LABEL: v_minimum_v4f64__nnan_nsz:
1726; GFX12:       ; %bb.0:
1727; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1728; GFX12-NEXT:    s_wait_expcnt 0x0
1729; GFX12-NEXT:    s_wait_samplecnt 0x0
1730; GFX12-NEXT:    s_wait_bvhcnt 0x0
1731; GFX12-NEXT:    s_wait_kmcnt 0x0
1732; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[8:9]
1733; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[10:11]
1734; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[12:13]
1735; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[14:15]
1736; GFX12-NEXT:    s_setpc_b64 s[30:31]
1737  %op = call nnan nsz <4 x double> @llvm.minimum.v4f64(<4 x double> %src0, <4 x double> %src1)
1738  ret <4 x double> %op
1739}
1740
1741define <8 x double> @v_minimum_v8f64(<8 x double> %src0, <8 x double> %src1) {
1742; GFX7-LABEL: v_minimum_v8f64:
1743; GFX7:       ; %bb.0:
1744; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1745; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32
1746; GFX7-NEXT:    v_min_f64 v[32:33], v[2:3], v[18:19]
1747; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[18:19]
1748; GFX7-NEXT:    v_min_f64 v[18:19], v[4:5], v[20:21]
1749; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[4:5], v[20:21]
1750; GFX7-NEXT:    v_min_f64 v[2:3], v[0:1], v[16:17]
1751; GFX7-NEXT:    v_cmp_u_f64_e64 s[8:9], v[0:1], v[16:17]
1752; GFX7-NEXT:    v_mov_b32_e32 v34, 0x7ff80000
1753; GFX7-NEXT:    v_min_f64 v[20:21], v[6:7], v[22:23]
1754; GFX7-NEXT:    v_cmp_u_f64_e64 s[6:7], v[6:7], v[22:23]
1755; GFX7-NEXT:    v_min_f64 v[16:17], v[8:9], v[24:25]
1756; GFX7-NEXT:    v_cmp_u_f64_e64 s[10:11], v[8:9], v[24:25]
1757; GFX7-NEXT:    v_min_f64 v[22:23], v[10:11], v[26:27]
1758; GFX7-NEXT:    v_cmp_u_f64_e64 s[12:13], v[10:11], v[26:27]
1759; GFX7-NEXT:    v_min_f64 v[24:25], v[12:13], v[28:29]
1760; GFX7-NEXT:    v_cmp_u_f64_e64 s[14:15], v[12:13], v[28:29]
1761; GFX7-NEXT:    v_cndmask_b32_e64 v0, v2, 0, s[8:9]
1762; GFX7-NEXT:    v_cndmask_b32_e64 v1, v3, v34, s[8:9]
1763; GFX7-NEXT:    v_cndmask_b32_e64 v2, v32, 0, vcc
1764; GFX7-NEXT:    v_cndmask_b32_e32 v3, v33, v34, vcc
1765; GFX7-NEXT:    v_cndmask_b32_e64 v4, v18, 0, s[4:5]
1766; GFX7-NEXT:    v_cndmask_b32_e64 v5, v19, v34, s[4:5]
1767; GFX7-NEXT:    v_cndmask_b32_e64 v6, v20, 0, s[6:7]
1768; GFX7-NEXT:    v_cndmask_b32_e64 v7, v21, v34, s[6:7]
1769; GFX7-NEXT:    v_cndmask_b32_e64 v8, v16, 0, s[10:11]
1770; GFX7-NEXT:    v_cndmask_b32_e64 v9, v17, v34, s[10:11]
1771; GFX7-NEXT:    v_cndmask_b32_e64 v10, v22, 0, s[12:13]
1772; GFX7-NEXT:    v_cndmask_b32_e64 v11, v23, v34, s[12:13]
1773; GFX7-NEXT:    v_cndmask_b32_e64 v12, v24, 0, s[14:15]
1774; GFX7-NEXT:    v_cndmask_b32_e64 v13, v25, v34, s[14:15]
1775; GFX7-NEXT:    s_waitcnt vmcnt(0)
1776; GFX7-NEXT:    v_min_f64 v[18:19], v[14:15], v[30:31]
1777; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[14:15], v[30:31]
1778; GFX7-NEXT:    v_cndmask_b32_e64 v14, v18, 0, vcc
1779; GFX7-NEXT:    v_cndmask_b32_e32 v15, v19, v34, vcc
1780; GFX7-NEXT:    s_setpc_b64 s[30:31]
1781;
1782; GFX8-LABEL: v_minimum_v8f64:
1783; GFX8:       ; %bb.0:
1784; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1785; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32
1786; GFX8-NEXT:    v_min_f64 v[32:33], v[2:3], v[18:19]
1787; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[18:19]
1788; GFX8-NEXT:    v_min_f64 v[18:19], v[4:5], v[20:21]
1789; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[4:5], v[20:21]
1790; GFX8-NEXT:    v_min_f64 v[2:3], v[0:1], v[16:17]
1791; GFX8-NEXT:    v_cmp_u_f64_e64 s[8:9], v[0:1], v[16:17]
1792; GFX8-NEXT:    v_mov_b32_e32 v34, 0x7ff80000
1793; GFX8-NEXT:    v_min_f64 v[20:21], v[6:7], v[22:23]
1794; GFX8-NEXT:    v_cmp_u_f64_e64 s[6:7], v[6:7], v[22:23]
1795; GFX8-NEXT:    v_min_f64 v[16:17], v[8:9], v[24:25]
1796; GFX8-NEXT:    v_cmp_u_f64_e64 s[10:11], v[8:9], v[24:25]
1797; GFX8-NEXT:    v_min_f64 v[22:23], v[10:11], v[26:27]
1798; GFX8-NEXT:    v_cmp_u_f64_e64 s[12:13], v[10:11], v[26:27]
1799; GFX8-NEXT:    v_min_f64 v[24:25], v[12:13], v[28:29]
1800; GFX8-NEXT:    v_cmp_u_f64_e64 s[14:15], v[12:13], v[28:29]
1801; GFX8-NEXT:    v_cndmask_b32_e64 v0, v2, 0, s[8:9]
1802; GFX8-NEXT:    v_cndmask_b32_e64 v1, v3, v34, s[8:9]
1803; GFX8-NEXT:    v_cndmask_b32_e64 v2, v32, 0, vcc
1804; GFX8-NEXT:    v_cndmask_b32_e32 v3, v33, v34, vcc
1805; GFX8-NEXT:    v_cndmask_b32_e64 v4, v18, 0, s[4:5]
1806; GFX8-NEXT:    v_cndmask_b32_e64 v5, v19, v34, s[4:5]
1807; GFX8-NEXT:    v_cndmask_b32_e64 v6, v20, 0, s[6:7]
1808; GFX8-NEXT:    v_cndmask_b32_e64 v7, v21, v34, s[6:7]
1809; GFX8-NEXT:    v_cndmask_b32_e64 v8, v16, 0, s[10:11]
1810; GFX8-NEXT:    v_cndmask_b32_e64 v9, v17, v34, s[10:11]
1811; GFX8-NEXT:    v_cndmask_b32_e64 v10, v22, 0, s[12:13]
1812; GFX8-NEXT:    v_cndmask_b32_e64 v11, v23, v34, s[12:13]
1813; GFX8-NEXT:    v_cndmask_b32_e64 v12, v24, 0, s[14:15]
1814; GFX8-NEXT:    v_cndmask_b32_e64 v13, v25, v34, s[14:15]
1815; GFX8-NEXT:    s_waitcnt vmcnt(0)
1816; GFX8-NEXT:    v_min_f64 v[18:19], v[14:15], v[30:31]
1817; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[14:15], v[30:31]
1818; GFX8-NEXT:    v_cndmask_b32_e64 v14, v18, 0, vcc
1819; GFX8-NEXT:    v_cndmask_b32_e32 v15, v19, v34, vcc
1820; GFX8-NEXT:    s_setpc_b64 s[30:31]
1821;
1822; GFX900-LABEL: v_minimum_v8f64:
1823; GFX900:       ; %bb.0:
1824; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1825; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32
1826; GFX900-NEXT:    v_min_f64 v[32:33], v[2:3], v[18:19]
1827; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[18:19]
1828; GFX900-NEXT:    v_min_f64 v[18:19], v[4:5], v[20:21]
1829; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[4:5], v[20:21]
1830; GFX900-NEXT:    v_min_f64 v[2:3], v[0:1], v[16:17]
1831; GFX900-NEXT:    v_cmp_u_f64_e64 s[8:9], v[0:1], v[16:17]
1832; GFX900-NEXT:    v_mov_b32_e32 v34, 0x7ff80000
1833; GFX900-NEXT:    v_min_f64 v[20:21], v[6:7], v[22:23]
1834; GFX900-NEXT:    v_cmp_u_f64_e64 s[6:7], v[6:7], v[22:23]
1835; GFX900-NEXT:    v_min_f64 v[16:17], v[8:9], v[24:25]
1836; GFX900-NEXT:    v_cmp_u_f64_e64 s[10:11], v[8:9], v[24:25]
1837; GFX900-NEXT:    v_min_f64 v[22:23], v[10:11], v[26:27]
1838; GFX900-NEXT:    v_cmp_u_f64_e64 s[12:13], v[10:11], v[26:27]
1839; GFX900-NEXT:    v_min_f64 v[24:25], v[12:13], v[28:29]
1840; GFX900-NEXT:    v_cmp_u_f64_e64 s[14:15], v[12:13], v[28:29]
1841; GFX900-NEXT:    v_cndmask_b32_e64 v0, v2, 0, s[8:9]
1842; GFX900-NEXT:    v_cndmask_b32_e64 v1, v3, v34, s[8:9]
1843; GFX900-NEXT:    v_cndmask_b32_e64 v2, v32, 0, vcc
1844; GFX900-NEXT:    v_cndmask_b32_e32 v3, v33, v34, vcc
1845; GFX900-NEXT:    v_cndmask_b32_e64 v4, v18, 0, s[4:5]
1846; GFX900-NEXT:    v_cndmask_b32_e64 v5, v19, v34, s[4:5]
1847; GFX900-NEXT:    v_cndmask_b32_e64 v6, v20, 0, s[6:7]
1848; GFX900-NEXT:    v_cndmask_b32_e64 v7, v21, v34, s[6:7]
1849; GFX900-NEXT:    v_cndmask_b32_e64 v8, v16, 0, s[10:11]
1850; GFX900-NEXT:    v_cndmask_b32_e64 v9, v17, v34, s[10:11]
1851; GFX900-NEXT:    v_cndmask_b32_e64 v10, v22, 0, s[12:13]
1852; GFX900-NEXT:    v_cndmask_b32_e64 v11, v23, v34, s[12:13]
1853; GFX900-NEXT:    v_cndmask_b32_e64 v12, v24, 0, s[14:15]
1854; GFX900-NEXT:    v_cndmask_b32_e64 v13, v25, v34, s[14:15]
1855; GFX900-NEXT:    s_waitcnt vmcnt(0)
1856; GFX900-NEXT:    v_min_f64 v[18:19], v[14:15], v[30:31]
1857; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[14:15], v[30:31]
1858; GFX900-NEXT:    v_cndmask_b32_e64 v14, v18, 0, vcc
1859; GFX900-NEXT:    v_cndmask_b32_e32 v15, v19, v34, vcc
1860; GFX900-NEXT:    s_setpc_b64 s[30:31]
1861;
1862; GFX950-LABEL: v_minimum_v8f64:
1863; GFX950:       ; %bb.0:
1864; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1865; GFX950-NEXT:    scratch_load_dword v31, off, s32
1866; GFX950-NEXT:    v_mov_b32_e32 v54, 0x7ff80000
1867; GFX950-NEXT:    v_min_f64 v[32:33], v[0:1], v[16:17]
1868; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[16:17]
1869; GFX950-NEXT:    v_min_f64 v[34:35], v[2:3], v[18:19]
1870; GFX950-NEXT:    v_min_f64 v[36:37], v[4:5], v[20:21]
1871; GFX950-NEXT:    v_cndmask_b32_e64 v0, v32, 0, vcc
1872; GFX950-NEXT:    v_cndmask_b32_e32 v1, v33, v54, vcc
1873; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[18:19]
1874; GFX950-NEXT:    v_min_f64 v[38:39], v[6:7], v[22:23]
1875; GFX950-NEXT:    v_min_f64 v[48:49], v[8:9], v[24:25]
1876; GFX950-NEXT:    v_cndmask_b32_e64 v2, v34, 0, vcc
1877; GFX950-NEXT:    v_cndmask_b32_e32 v3, v35, v54, vcc
1878; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[4:5], v[20:21]
1879; GFX950-NEXT:    v_min_f64 v[50:51], v[10:11], v[26:27]
1880; GFX950-NEXT:    v_min_f64 v[52:53], v[12:13], v[28:29]
1881; GFX950-NEXT:    v_cndmask_b32_e64 v4, v36, 0, vcc
1882; GFX950-NEXT:    v_cndmask_b32_e32 v5, v37, v54, vcc
1883; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[6:7], v[22:23]
1884; GFX950-NEXT:    s_waitcnt vmcnt(0)
1885; GFX950-NEXT:    v_min_f64 v[16:17], v[14:15], v[30:31]
1886; GFX950-NEXT:    v_cndmask_b32_e64 v6, v38, 0, vcc
1887; GFX950-NEXT:    v_cndmask_b32_e32 v7, v39, v54, vcc
1888; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[8:9], v[24:25]
1889; GFX950-NEXT:    s_nop 1
1890; GFX950-NEXT:    v_cndmask_b32_e64 v8, v48, 0, vcc
1891; GFX950-NEXT:    v_cndmask_b32_e32 v9, v49, v54, vcc
1892; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[10:11], v[26:27]
1893; GFX950-NEXT:    s_nop 1
1894; GFX950-NEXT:    v_cndmask_b32_e64 v10, v50, 0, vcc
1895; GFX950-NEXT:    v_cndmask_b32_e32 v11, v51, v54, vcc
1896; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[12:13], v[28:29]
1897; GFX950-NEXT:    s_nop 1
1898; GFX950-NEXT:    v_cndmask_b32_e64 v12, v52, 0, vcc
1899; GFX950-NEXT:    v_cndmask_b32_e32 v13, v53, v54, vcc
1900; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[14:15], v[30:31]
1901; GFX950-NEXT:    s_nop 1
1902; GFX950-NEXT:    v_cndmask_b32_e64 v14, v16, 0, vcc
1903; GFX950-NEXT:    v_cndmask_b32_e32 v15, v17, v54, vcc
1904; GFX950-NEXT:    s_setpc_b64 s[30:31]
1905;
1906; GFX10-LABEL: v_minimum_v8f64:
1907; GFX10:       ; %bb.0:
1908; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1909; GFX10-NEXT:    buffer_load_dword v31, off, s[0:3], s32
1910; GFX10-NEXT:    v_min_f64 v[32:33], v[0:1], v[16:17]
1911; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[16:17]
1912; GFX10-NEXT:    v_min_f64 v[16:17], v[2:3], v[18:19]
1913; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[2:3], v[18:19]
1914; GFX10-NEXT:    v_min_f64 v[18:19], v[4:5], v[20:21]
1915; GFX10-NEXT:    v_cmp_u_f64_e64 s5, v[4:5], v[20:21]
1916; GFX10-NEXT:    v_min_f64 v[20:21], v[6:7], v[22:23]
1917; GFX10-NEXT:    v_cmp_u_f64_e64 s6, v[6:7], v[22:23]
1918; GFX10-NEXT:    v_min_f64 v[22:23], v[8:9], v[24:25]
1919; GFX10-NEXT:    v_cmp_u_f64_e64 s7, v[8:9], v[24:25]
1920; GFX10-NEXT:    v_min_f64 v[24:25], v[10:11], v[26:27]
1921; GFX10-NEXT:    v_cmp_u_f64_e64 s8, v[10:11], v[26:27]
1922; GFX10-NEXT:    v_min_f64 v[26:27], v[12:13], v[28:29]
1923; GFX10-NEXT:    v_cmp_u_f64_e64 s9, v[12:13], v[28:29]
1924; GFX10-NEXT:    v_cndmask_b32_e64 v0, v32, 0, vcc_lo
1925; GFX10-NEXT:    v_cndmask_b32_e64 v1, v33, 0x7ff80000, vcc_lo
1926; GFX10-NEXT:    v_cndmask_b32_e64 v2, v16, 0, s4
1927; GFX10-NEXT:    v_cndmask_b32_e64 v3, v17, 0x7ff80000, s4
1928; GFX10-NEXT:    v_cndmask_b32_e64 v4, v18, 0, s5
1929; GFX10-NEXT:    v_cndmask_b32_e64 v5, v19, 0x7ff80000, s5
1930; GFX10-NEXT:    v_cndmask_b32_e64 v6, v20, 0, s6
1931; GFX10-NEXT:    v_cndmask_b32_e64 v7, v21, 0x7ff80000, s6
1932; GFX10-NEXT:    v_cndmask_b32_e64 v8, v22, 0, s7
1933; GFX10-NEXT:    v_cndmask_b32_e64 v9, v23, 0x7ff80000, s7
1934; GFX10-NEXT:    v_cndmask_b32_e64 v10, v24, 0, s8
1935; GFX10-NEXT:    v_cndmask_b32_e64 v11, v25, 0x7ff80000, s8
1936; GFX10-NEXT:    v_cndmask_b32_e64 v12, v26, 0, s9
1937; GFX10-NEXT:    v_cndmask_b32_e64 v13, v27, 0x7ff80000, s9
1938; GFX10-NEXT:    s_waitcnt vmcnt(0)
1939; GFX10-NEXT:    v_min_f64 v[28:29], v[14:15], v[30:31]
1940; GFX10-NEXT:    v_cmp_u_f64_e64 s10, v[14:15], v[30:31]
1941; GFX10-NEXT:    v_cndmask_b32_e64 v14, v28, 0, s10
1942; GFX10-NEXT:    v_cndmask_b32_e64 v15, v29, 0x7ff80000, s10
1943; GFX10-NEXT:    s_setpc_b64 s[30:31]
1944;
1945; GFX11-LABEL: v_minimum_v8f64:
1946; GFX11:       ; %bb.0:
1947; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
1948; GFX11-NEXT:    scratch_load_b32 v31, off, s32
1949; GFX11-NEXT:    v_min_f64 v[32:33], v[0:1], v[16:17]
1950; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[16:17]
1951; GFX11-NEXT:    v_min_f64 v[16:17], v[2:3], v[18:19]
1952; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[18:19]
1953; GFX11-NEXT:    v_min_f64 v[18:19], v[4:5], v[20:21]
1954; GFX11-NEXT:    v_cmp_u_f64_e64 s1, v[4:5], v[20:21]
1955; GFX11-NEXT:    v_min_f64 v[20:21], v[6:7], v[22:23]
1956; GFX11-NEXT:    v_cmp_u_f64_e64 s2, v[6:7], v[22:23]
1957; GFX11-NEXT:    v_min_f64 v[22:23], v[8:9], v[24:25]
1958; GFX11-NEXT:    v_cmp_u_f64_e64 s3, v[8:9], v[24:25]
1959; GFX11-NEXT:    v_min_f64 v[24:25], v[10:11], v[26:27]
1960; GFX11-NEXT:    v_cmp_u_f64_e64 s4, v[10:11], v[26:27]
1961; GFX11-NEXT:    v_min_f64 v[26:27], v[12:13], v[28:29]
1962; GFX11-NEXT:    v_cmp_u_f64_e64 s5, v[12:13], v[28:29]
1963; GFX11-NEXT:    v_cndmask_b32_e64 v0, v32, 0, vcc_lo
1964; GFX11-NEXT:    v_cndmask_b32_e64 v1, v33, 0x7ff80000, vcc_lo
1965; GFX11-NEXT:    v_cndmask_b32_e64 v2, v16, 0, s0
1966; GFX11-NEXT:    v_cndmask_b32_e64 v3, v17, 0x7ff80000, s0
1967; GFX11-NEXT:    v_cndmask_b32_e64 v4, v18, 0, s1
1968; GFX11-NEXT:    v_cndmask_b32_e64 v5, v19, 0x7ff80000, s1
1969; GFX11-NEXT:    v_cndmask_b32_e64 v6, v20, 0, s2
1970; GFX11-NEXT:    v_cndmask_b32_e64 v7, v21, 0x7ff80000, s2
1971; GFX11-NEXT:    v_cndmask_b32_e64 v8, v22, 0, s3
1972; GFX11-NEXT:    v_cndmask_b32_e64 v9, v23, 0x7ff80000, s3
1973; GFX11-NEXT:    v_cndmask_b32_e64 v10, v24, 0, s4
1974; GFX11-NEXT:    v_cndmask_b32_e64 v11, v25, 0x7ff80000, s4
1975; GFX11-NEXT:    v_cndmask_b32_e64 v12, v26, 0, s5
1976; GFX11-NEXT:    v_cndmask_b32_e64 v13, v27, 0x7ff80000, s5
1977; GFX11-NEXT:    s_waitcnt vmcnt(0)
1978; GFX11-NEXT:    v_min_f64 v[28:29], v[14:15], v[30:31]
1979; GFX11-NEXT:    v_cmp_u_f64_e64 s6, v[14:15], v[30:31]
1980; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_3)
1981; GFX11-NEXT:    v_cndmask_b32_e64 v14, v28, 0, s6
1982; GFX11-NEXT:    v_cndmask_b32_e64 v15, v29, 0x7ff80000, s6
1983; GFX11-NEXT:    s_setpc_b64 s[30:31]
1984;
1985; GFX12-LABEL: v_minimum_v8f64:
1986; GFX12:       ; %bb.0:
1987; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
1988; GFX12-NEXT:    s_wait_expcnt 0x0
1989; GFX12-NEXT:    s_wait_samplecnt 0x0
1990; GFX12-NEXT:    s_wait_bvhcnt 0x0
1991; GFX12-NEXT:    s_wait_kmcnt 0x0
1992; GFX12-NEXT:    scratch_load_b32 v31, off, s32
1993; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[16:17]
1994; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[18:19]
1995; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[20:21]
1996; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[22:23]
1997; GFX12-NEXT:    v_minimum_f64 v[8:9], v[8:9], v[24:25]
1998; GFX12-NEXT:    v_minimum_f64 v[10:11], v[10:11], v[26:27]
1999; GFX12-NEXT:    v_minimum_f64 v[12:13], v[12:13], v[28:29]
2000; GFX12-NEXT:    s_wait_loadcnt 0x0
2001; GFX12-NEXT:    v_minimum_f64 v[14:15], v[14:15], v[30:31]
2002; GFX12-NEXT:    s_setpc_b64 s[30:31]
2003  %op = call <8 x double> @llvm.minimum.v8f64(<8 x double> %src0, <8 x double> %src1)
2004  ret <8 x double> %op
2005}
2006
2007define <16 x double> @v_minimum_v16f64(<16 x double> %src0, <16 x double> %src1) {
2008; GFX7-LABEL: v_minimum_v16f64:
2009; GFX7:       ; %bb.0:
2010; GFX7-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2011; GFX7-NEXT:    s_xor_saveexec_b64 s[4:5], -1
2012; GFX7-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
2013; GFX7-NEXT:    s_mov_b64 exec, s[4:5]
2014; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:8
2015; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
2016; GFX7-NEXT:    v_writelane_b32 v34, s30, 0
2017; GFX7-NEXT:    v_writelane_b32 v34, s31, 1
2018; GFX7-NEXT:    v_writelane_b32 v34, s34, 2
2019; GFX7-NEXT:    v_writelane_b32 v34, s35, 3
2020; GFX7-NEXT:    s_waitcnt vmcnt(0)
2021; GFX7-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[31:32]
2022; GFX7-NEXT:    v_min_f64 v[0:1], v[0:1], v[31:32]
2023; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:16
2024; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:12
2025; GFX7-NEXT:    v_cndmask_b32_e64 v0, v0, 0, vcc
2026; GFX7-NEXT:    s_waitcnt vmcnt(0)
2027; GFX7-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[31:32]
2028; GFX7-NEXT:    v_min_f64 v[2:3], v[2:3], v[31:32]
2029; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:24
2030; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:20
2031; GFX7-NEXT:    v_cndmask_b32_e64 v2, v2, 0, s[4:5]
2032; GFX7-NEXT:    s_waitcnt vmcnt(0)
2033; GFX7-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[31:32]
2034; GFX7-NEXT:    v_min_f64 v[4:5], v[4:5], v[31:32]
2035; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:32
2036; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:28
2037; GFX7-NEXT:    v_cndmask_b32_e64 v4, v4, 0, s[6:7]
2038; GFX7-NEXT:    s_waitcnt vmcnt(0)
2039; GFX7-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[31:32]
2040; GFX7-NEXT:    v_min_f64 v[6:7], v[6:7], v[31:32]
2041; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:36
2042; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:40
2043; GFX7-NEXT:    v_cndmask_b32_e64 v6, v6, 0, s[8:9]
2044; GFX7-NEXT:    s_waitcnt vmcnt(0)
2045; GFX7-NEXT:    v_cmp_u_f64_e64 s[10:11], v[8:9], v[31:32]
2046; GFX7-NEXT:    v_min_f64 v[8:9], v[8:9], v[31:32]
2047; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:48
2048; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:44
2049; GFX7-NEXT:    v_cndmask_b32_e64 v8, v8, 0, s[10:11]
2050; GFX7-NEXT:    s_waitcnt vmcnt(0)
2051; GFX7-NEXT:    v_cmp_u_f64_e64 s[12:13], v[10:11], v[31:32]
2052; GFX7-NEXT:    v_min_f64 v[10:11], v[10:11], v[31:32]
2053; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:56
2054; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:52
2055; GFX7-NEXT:    v_cndmask_b32_e64 v10, v10, 0, s[12:13]
2056; GFX7-NEXT:    s_waitcnt vmcnt(0)
2057; GFX7-NEXT:    v_cmp_u_f64_e64 s[14:15], v[12:13], v[31:32]
2058; GFX7-NEXT:    v_min_f64 v[12:13], v[12:13], v[31:32]
2059; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:64
2060; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:60
2061; GFX7-NEXT:    v_cndmask_b32_e64 v12, v12, 0, s[14:15]
2062; GFX7-NEXT:    s_waitcnt vmcnt(0)
2063; GFX7-NEXT:    v_cmp_u_f64_e64 s[16:17], v[14:15], v[31:32]
2064; GFX7-NEXT:    v_min_f64 v[14:15], v[14:15], v[31:32]
2065; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:68
2066; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:72
2067; GFX7-NEXT:    v_cndmask_b32_e64 v14, v14, 0, s[16:17]
2068; GFX7-NEXT:    s_waitcnt vmcnt(0)
2069; GFX7-NEXT:    v_cmp_u_f64_e64 s[18:19], v[16:17], v[31:32]
2070; GFX7-NEXT:    v_min_f64 v[16:17], v[16:17], v[31:32]
2071; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:80
2072; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:76
2073; GFX7-NEXT:    v_cndmask_b32_e64 v16, v16, 0, s[18:19]
2074; GFX7-NEXT:    s_waitcnt vmcnt(0)
2075; GFX7-NEXT:    v_cmp_u_f64_e64 s[20:21], v[18:19], v[31:32]
2076; GFX7-NEXT:    v_min_f64 v[18:19], v[18:19], v[31:32]
2077; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:88
2078; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:84
2079; GFX7-NEXT:    v_cndmask_b32_e64 v18, v18, 0, s[20:21]
2080; GFX7-NEXT:    s_waitcnt vmcnt(0)
2081; GFX7-NEXT:    v_cmp_u_f64_e64 s[22:23], v[20:21], v[31:32]
2082; GFX7-NEXT:    v_min_f64 v[20:21], v[20:21], v[31:32]
2083; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:96
2084; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:92
2085; GFX7-NEXT:    v_cndmask_b32_e64 v20, v20, 0, s[22:23]
2086; GFX7-NEXT:    s_waitcnt vmcnt(0)
2087; GFX7-NEXT:    v_cmp_u_f64_e64 s[24:25], v[22:23], v[31:32]
2088; GFX7-NEXT:    v_min_f64 v[22:23], v[22:23], v[31:32]
2089; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:100
2090; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:104
2091; GFX7-NEXT:    v_cndmask_b32_e64 v22, v22, 0, s[24:25]
2092; GFX7-NEXT:    s_waitcnt vmcnt(0)
2093; GFX7-NEXT:    v_cmp_u_f64_e64 s[26:27], v[24:25], v[31:32]
2094; GFX7-NEXT:    v_min_f64 v[24:25], v[24:25], v[31:32]
2095; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:112
2096; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:108
2097; GFX7-NEXT:    v_cndmask_b32_e64 v24, v24, 0, s[26:27]
2098; GFX7-NEXT:    s_waitcnt vmcnt(0)
2099; GFX7-NEXT:    v_cmp_u_f64_e64 s[28:29], v[26:27], v[31:32]
2100; GFX7-NEXT:    v_min_f64 v[26:27], v[26:27], v[31:32]
2101; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:120
2102; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:116
2103; GFX7-NEXT:    v_cndmask_b32_e64 v26, v26, 0, s[28:29]
2104; GFX7-NEXT:    s_waitcnt vmcnt(0)
2105; GFX7-NEXT:    v_cmp_u_f64_e64 s[30:31], v[28:29], v[31:32]
2106; GFX7-NEXT:    v_min_f64 v[28:29], v[28:29], v[31:32]
2107; GFX7-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2108; GFX7-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:128
2109; GFX7-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:124
2110; GFX7-NEXT:    v_cndmask_b32_e64 v28, v28, 0, s[30:31]
2111; GFX7-NEXT:    s_waitcnt vmcnt(0)
2112; GFX7-NEXT:    v_cmp_u_f64_e64 s[34:35], v[30:31], v[32:33]
2113; GFX7-NEXT:    v_min_f64 v[30:31], v[30:31], v[32:33]
2114; GFX7-NEXT:    v_mov_b32_e32 v32, 0x7ff80000
2115; GFX7-NEXT:    v_cndmask_b32_e32 v1, v1, v32, vcc
2116; GFX7-NEXT:    v_cndmask_b32_e64 v3, v3, v32, s[4:5]
2117; GFX7-NEXT:    v_cndmask_b32_e64 v5, v5, v32, s[6:7]
2118; GFX7-NEXT:    v_cndmask_b32_e64 v7, v7, v32, s[8:9]
2119; GFX7-NEXT:    v_cndmask_b32_e64 v9, v9, v32, s[10:11]
2120; GFX7-NEXT:    v_cndmask_b32_e64 v11, v11, v32, s[12:13]
2121; GFX7-NEXT:    v_cndmask_b32_e64 v13, v13, v32, s[14:15]
2122; GFX7-NEXT:    v_cndmask_b32_e64 v15, v15, v32, s[16:17]
2123; GFX7-NEXT:    v_cndmask_b32_e64 v17, v17, v32, s[18:19]
2124; GFX7-NEXT:    v_cndmask_b32_e64 v19, v19, v32, s[20:21]
2125; GFX7-NEXT:    v_cndmask_b32_e64 v21, v21, v32, s[22:23]
2126; GFX7-NEXT:    v_cndmask_b32_e64 v23, v23, v32, s[24:25]
2127; GFX7-NEXT:    v_cndmask_b32_e64 v25, v25, v32, s[26:27]
2128; GFX7-NEXT:    v_cndmask_b32_e64 v27, v27, v32, s[28:29]
2129; GFX7-NEXT:    v_cndmask_b32_e64 v29, v29, v32, s[30:31]
2130; GFX7-NEXT:    v_cndmask_b32_e64 v31, v31, v32, s[34:35]
2131; GFX7-NEXT:    v_cndmask_b32_e64 v30, v30, 0, s[34:35]
2132; GFX7-NEXT:    v_readlane_b32 s35, v34, 3
2133; GFX7-NEXT:    v_readlane_b32 s34, v34, 2
2134; GFX7-NEXT:    v_readlane_b32 s31, v34, 1
2135; GFX7-NEXT:    v_readlane_b32 s30, v34, 0
2136; GFX7-NEXT:    s_xor_saveexec_b64 s[4:5], -1
2137; GFX7-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload
2138; GFX7-NEXT:    s_mov_b64 exec, s[4:5]
2139; GFX7-NEXT:    s_waitcnt vmcnt(0)
2140; GFX7-NEXT:    s_setpc_b64 s[30:31]
2141;
2142; GFX8-LABEL: v_minimum_v16f64:
2143; GFX8:       ; %bb.0:
2144; GFX8-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2145; GFX8-NEXT:    s_xor_saveexec_b64 s[4:5], -1
2146; GFX8-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
2147; GFX8-NEXT:    s_mov_b64 exec, s[4:5]
2148; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:8
2149; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
2150; GFX8-NEXT:    v_writelane_b32 v34, s30, 0
2151; GFX8-NEXT:    v_writelane_b32 v34, s31, 1
2152; GFX8-NEXT:    v_writelane_b32 v34, s34, 2
2153; GFX8-NEXT:    v_writelane_b32 v34, s35, 3
2154; GFX8-NEXT:    s_waitcnt vmcnt(0)
2155; GFX8-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[31:32]
2156; GFX8-NEXT:    v_min_f64 v[0:1], v[0:1], v[31:32]
2157; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:16
2158; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:12
2159; GFX8-NEXT:    v_cndmask_b32_e64 v0, v0, 0, vcc
2160; GFX8-NEXT:    s_waitcnt vmcnt(0)
2161; GFX8-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[31:32]
2162; GFX8-NEXT:    v_min_f64 v[2:3], v[2:3], v[31:32]
2163; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:24
2164; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:20
2165; GFX8-NEXT:    v_cndmask_b32_e64 v2, v2, 0, s[4:5]
2166; GFX8-NEXT:    s_waitcnt vmcnt(0)
2167; GFX8-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[31:32]
2168; GFX8-NEXT:    v_min_f64 v[4:5], v[4:5], v[31:32]
2169; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:32
2170; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:28
2171; GFX8-NEXT:    v_cndmask_b32_e64 v4, v4, 0, s[6:7]
2172; GFX8-NEXT:    s_waitcnt vmcnt(0)
2173; GFX8-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[31:32]
2174; GFX8-NEXT:    v_min_f64 v[6:7], v[6:7], v[31:32]
2175; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:36
2176; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:40
2177; GFX8-NEXT:    v_cndmask_b32_e64 v6, v6, 0, s[8:9]
2178; GFX8-NEXT:    s_waitcnt vmcnt(0)
2179; GFX8-NEXT:    v_cmp_u_f64_e64 s[10:11], v[8:9], v[31:32]
2180; GFX8-NEXT:    v_min_f64 v[8:9], v[8:9], v[31:32]
2181; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:48
2182; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:44
2183; GFX8-NEXT:    v_cndmask_b32_e64 v8, v8, 0, s[10:11]
2184; GFX8-NEXT:    s_waitcnt vmcnt(0)
2185; GFX8-NEXT:    v_cmp_u_f64_e64 s[12:13], v[10:11], v[31:32]
2186; GFX8-NEXT:    v_min_f64 v[10:11], v[10:11], v[31:32]
2187; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:56
2188; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:52
2189; GFX8-NEXT:    v_cndmask_b32_e64 v10, v10, 0, s[12:13]
2190; GFX8-NEXT:    s_waitcnt vmcnt(0)
2191; GFX8-NEXT:    v_cmp_u_f64_e64 s[14:15], v[12:13], v[31:32]
2192; GFX8-NEXT:    v_min_f64 v[12:13], v[12:13], v[31:32]
2193; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:64
2194; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:60
2195; GFX8-NEXT:    v_cndmask_b32_e64 v12, v12, 0, s[14:15]
2196; GFX8-NEXT:    s_waitcnt vmcnt(0)
2197; GFX8-NEXT:    v_cmp_u_f64_e64 s[16:17], v[14:15], v[31:32]
2198; GFX8-NEXT:    v_min_f64 v[14:15], v[14:15], v[31:32]
2199; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:68
2200; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:72
2201; GFX8-NEXT:    v_cndmask_b32_e64 v14, v14, 0, s[16:17]
2202; GFX8-NEXT:    s_waitcnt vmcnt(0)
2203; GFX8-NEXT:    v_cmp_u_f64_e64 s[18:19], v[16:17], v[31:32]
2204; GFX8-NEXT:    v_min_f64 v[16:17], v[16:17], v[31:32]
2205; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:80
2206; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:76
2207; GFX8-NEXT:    v_cndmask_b32_e64 v16, v16, 0, s[18:19]
2208; GFX8-NEXT:    s_waitcnt vmcnt(0)
2209; GFX8-NEXT:    v_cmp_u_f64_e64 s[20:21], v[18:19], v[31:32]
2210; GFX8-NEXT:    v_min_f64 v[18:19], v[18:19], v[31:32]
2211; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:88
2212; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:84
2213; GFX8-NEXT:    v_cndmask_b32_e64 v18, v18, 0, s[20:21]
2214; GFX8-NEXT:    s_waitcnt vmcnt(0)
2215; GFX8-NEXT:    v_cmp_u_f64_e64 s[22:23], v[20:21], v[31:32]
2216; GFX8-NEXT:    v_min_f64 v[20:21], v[20:21], v[31:32]
2217; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:96
2218; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:92
2219; GFX8-NEXT:    v_cndmask_b32_e64 v20, v20, 0, s[22:23]
2220; GFX8-NEXT:    s_waitcnt vmcnt(0)
2221; GFX8-NEXT:    v_cmp_u_f64_e64 s[24:25], v[22:23], v[31:32]
2222; GFX8-NEXT:    v_min_f64 v[22:23], v[22:23], v[31:32]
2223; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:100
2224; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:104
2225; GFX8-NEXT:    v_cndmask_b32_e64 v22, v22, 0, s[24:25]
2226; GFX8-NEXT:    s_waitcnt vmcnt(0)
2227; GFX8-NEXT:    v_cmp_u_f64_e64 s[26:27], v[24:25], v[31:32]
2228; GFX8-NEXT:    v_min_f64 v[24:25], v[24:25], v[31:32]
2229; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:112
2230; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:108
2231; GFX8-NEXT:    v_cndmask_b32_e64 v24, v24, 0, s[26:27]
2232; GFX8-NEXT:    s_waitcnt vmcnt(0)
2233; GFX8-NEXT:    v_cmp_u_f64_e64 s[28:29], v[26:27], v[31:32]
2234; GFX8-NEXT:    v_min_f64 v[26:27], v[26:27], v[31:32]
2235; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:120
2236; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:116
2237; GFX8-NEXT:    v_cndmask_b32_e64 v26, v26, 0, s[28:29]
2238; GFX8-NEXT:    s_waitcnt vmcnt(0)
2239; GFX8-NEXT:    v_cmp_u_f64_e64 s[30:31], v[28:29], v[31:32]
2240; GFX8-NEXT:    v_min_f64 v[28:29], v[28:29], v[31:32]
2241; GFX8-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2242; GFX8-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:128
2243; GFX8-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:124
2244; GFX8-NEXT:    v_cndmask_b32_e64 v28, v28, 0, s[30:31]
2245; GFX8-NEXT:    s_waitcnt vmcnt(0)
2246; GFX8-NEXT:    v_cmp_u_f64_e64 s[34:35], v[30:31], v[32:33]
2247; GFX8-NEXT:    v_min_f64 v[30:31], v[30:31], v[32:33]
2248; GFX8-NEXT:    v_mov_b32_e32 v32, 0x7ff80000
2249; GFX8-NEXT:    v_cndmask_b32_e32 v1, v1, v32, vcc
2250; GFX8-NEXT:    v_cndmask_b32_e64 v3, v3, v32, s[4:5]
2251; GFX8-NEXT:    v_cndmask_b32_e64 v5, v5, v32, s[6:7]
2252; GFX8-NEXT:    v_cndmask_b32_e64 v7, v7, v32, s[8:9]
2253; GFX8-NEXT:    v_cndmask_b32_e64 v9, v9, v32, s[10:11]
2254; GFX8-NEXT:    v_cndmask_b32_e64 v11, v11, v32, s[12:13]
2255; GFX8-NEXT:    v_cndmask_b32_e64 v13, v13, v32, s[14:15]
2256; GFX8-NEXT:    v_cndmask_b32_e64 v15, v15, v32, s[16:17]
2257; GFX8-NEXT:    v_cndmask_b32_e64 v17, v17, v32, s[18:19]
2258; GFX8-NEXT:    v_cndmask_b32_e64 v19, v19, v32, s[20:21]
2259; GFX8-NEXT:    v_cndmask_b32_e64 v21, v21, v32, s[22:23]
2260; GFX8-NEXT:    v_cndmask_b32_e64 v23, v23, v32, s[24:25]
2261; GFX8-NEXT:    v_cndmask_b32_e64 v25, v25, v32, s[26:27]
2262; GFX8-NEXT:    v_cndmask_b32_e64 v27, v27, v32, s[28:29]
2263; GFX8-NEXT:    v_cndmask_b32_e64 v29, v29, v32, s[30:31]
2264; GFX8-NEXT:    v_cndmask_b32_e64 v31, v31, v32, s[34:35]
2265; GFX8-NEXT:    v_cndmask_b32_e64 v30, v30, 0, s[34:35]
2266; GFX8-NEXT:    v_readlane_b32 s35, v34, 3
2267; GFX8-NEXT:    v_readlane_b32 s34, v34, 2
2268; GFX8-NEXT:    v_readlane_b32 s31, v34, 1
2269; GFX8-NEXT:    v_readlane_b32 s30, v34, 0
2270; GFX8-NEXT:    s_xor_saveexec_b64 s[4:5], -1
2271; GFX8-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload
2272; GFX8-NEXT:    s_mov_b64 exec, s[4:5]
2273; GFX8-NEXT:    s_waitcnt vmcnt(0)
2274; GFX8-NEXT:    s_setpc_b64 s[30:31]
2275;
2276; GFX900-LABEL: v_minimum_v16f64:
2277; GFX900:       ; %bb.0:
2278; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2279; GFX900-NEXT:    s_xor_saveexec_b64 s[4:5], -1
2280; GFX900-NEXT:    buffer_store_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Spill
2281; GFX900-NEXT:    s_mov_b64 exec, s[4:5]
2282; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:8
2283; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:4
2284; GFX900-NEXT:    v_writelane_b32 v34, s30, 0
2285; GFX900-NEXT:    v_writelane_b32 v34, s31, 1
2286; GFX900-NEXT:    v_writelane_b32 v34, s34, 2
2287; GFX900-NEXT:    v_writelane_b32 v34, s35, 3
2288; GFX900-NEXT:    s_waitcnt vmcnt(0)
2289; GFX900-NEXT:    v_cmp_u_f64_e32 vcc, v[0:1], v[31:32]
2290; GFX900-NEXT:    v_min_f64 v[0:1], v[0:1], v[31:32]
2291; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:16
2292; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:12
2293; GFX900-NEXT:    v_cndmask_b32_e64 v0, v0, 0, vcc
2294; GFX900-NEXT:    s_waitcnt vmcnt(0)
2295; GFX900-NEXT:    v_cmp_u_f64_e64 s[4:5], v[2:3], v[31:32]
2296; GFX900-NEXT:    v_min_f64 v[2:3], v[2:3], v[31:32]
2297; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:24
2298; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:20
2299; GFX900-NEXT:    v_cndmask_b32_e64 v2, v2, 0, s[4:5]
2300; GFX900-NEXT:    s_waitcnt vmcnt(0)
2301; GFX900-NEXT:    v_cmp_u_f64_e64 s[6:7], v[4:5], v[31:32]
2302; GFX900-NEXT:    v_min_f64 v[4:5], v[4:5], v[31:32]
2303; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:32
2304; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:28
2305; GFX900-NEXT:    v_cndmask_b32_e64 v4, v4, 0, s[6:7]
2306; GFX900-NEXT:    s_waitcnt vmcnt(0)
2307; GFX900-NEXT:    v_cmp_u_f64_e64 s[8:9], v[6:7], v[31:32]
2308; GFX900-NEXT:    v_min_f64 v[6:7], v[6:7], v[31:32]
2309; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:36
2310; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:40
2311; GFX900-NEXT:    v_cndmask_b32_e64 v6, v6, 0, s[8:9]
2312; GFX900-NEXT:    s_waitcnt vmcnt(0)
2313; GFX900-NEXT:    v_cmp_u_f64_e64 s[10:11], v[8:9], v[31:32]
2314; GFX900-NEXT:    v_min_f64 v[8:9], v[8:9], v[31:32]
2315; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:48
2316; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:44
2317; GFX900-NEXT:    v_cndmask_b32_e64 v8, v8, 0, s[10:11]
2318; GFX900-NEXT:    s_waitcnt vmcnt(0)
2319; GFX900-NEXT:    v_cmp_u_f64_e64 s[12:13], v[10:11], v[31:32]
2320; GFX900-NEXT:    v_min_f64 v[10:11], v[10:11], v[31:32]
2321; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:56
2322; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:52
2323; GFX900-NEXT:    v_cndmask_b32_e64 v10, v10, 0, s[12:13]
2324; GFX900-NEXT:    s_waitcnt vmcnt(0)
2325; GFX900-NEXT:    v_cmp_u_f64_e64 s[14:15], v[12:13], v[31:32]
2326; GFX900-NEXT:    v_min_f64 v[12:13], v[12:13], v[31:32]
2327; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:64
2328; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:60
2329; GFX900-NEXT:    v_cndmask_b32_e64 v12, v12, 0, s[14:15]
2330; GFX900-NEXT:    s_waitcnt vmcnt(0)
2331; GFX900-NEXT:    v_cmp_u_f64_e64 s[16:17], v[14:15], v[31:32]
2332; GFX900-NEXT:    v_min_f64 v[14:15], v[14:15], v[31:32]
2333; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:68
2334; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:72
2335; GFX900-NEXT:    v_cndmask_b32_e64 v14, v14, 0, s[16:17]
2336; GFX900-NEXT:    s_waitcnt vmcnt(0)
2337; GFX900-NEXT:    v_cmp_u_f64_e64 s[18:19], v[16:17], v[31:32]
2338; GFX900-NEXT:    v_min_f64 v[16:17], v[16:17], v[31:32]
2339; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:80
2340; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:76
2341; GFX900-NEXT:    v_cndmask_b32_e64 v16, v16, 0, s[18:19]
2342; GFX900-NEXT:    s_waitcnt vmcnt(0)
2343; GFX900-NEXT:    v_cmp_u_f64_e64 s[20:21], v[18:19], v[31:32]
2344; GFX900-NEXT:    v_min_f64 v[18:19], v[18:19], v[31:32]
2345; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:88
2346; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:84
2347; GFX900-NEXT:    v_cndmask_b32_e64 v18, v18, 0, s[20:21]
2348; GFX900-NEXT:    s_waitcnt vmcnt(0)
2349; GFX900-NEXT:    v_cmp_u_f64_e64 s[22:23], v[20:21], v[31:32]
2350; GFX900-NEXT:    v_min_f64 v[20:21], v[20:21], v[31:32]
2351; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:96
2352; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:92
2353; GFX900-NEXT:    v_cndmask_b32_e64 v20, v20, 0, s[22:23]
2354; GFX900-NEXT:    s_waitcnt vmcnt(0)
2355; GFX900-NEXT:    v_cmp_u_f64_e64 s[24:25], v[22:23], v[31:32]
2356; GFX900-NEXT:    v_min_f64 v[22:23], v[22:23], v[31:32]
2357; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:100
2358; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:104
2359; GFX900-NEXT:    v_cndmask_b32_e64 v22, v22, 0, s[24:25]
2360; GFX900-NEXT:    s_waitcnt vmcnt(0)
2361; GFX900-NEXT:    v_cmp_u_f64_e64 s[26:27], v[24:25], v[31:32]
2362; GFX900-NEXT:    v_min_f64 v[24:25], v[24:25], v[31:32]
2363; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:112
2364; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:108
2365; GFX900-NEXT:    v_cndmask_b32_e64 v24, v24, 0, s[26:27]
2366; GFX900-NEXT:    s_waitcnt vmcnt(0)
2367; GFX900-NEXT:    v_cmp_u_f64_e64 s[28:29], v[26:27], v[31:32]
2368; GFX900-NEXT:    v_min_f64 v[26:27], v[26:27], v[31:32]
2369; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:120
2370; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:116
2371; GFX900-NEXT:    v_cndmask_b32_e64 v26, v26, 0, s[28:29]
2372; GFX900-NEXT:    s_waitcnt vmcnt(0)
2373; GFX900-NEXT:    v_cmp_u_f64_e64 s[30:31], v[28:29], v[31:32]
2374; GFX900-NEXT:    v_min_f64 v[28:29], v[28:29], v[31:32]
2375; GFX900-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2376; GFX900-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:128
2377; GFX900-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:124
2378; GFX900-NEXT:    v_cndmask_b32_e64 v28, v28, 0, s[30:31]
2379; GFX900-NEXT:    s_waitcnt vmcnt(0)
2380; GFX900-NEXT:    v_cmp_u_f64_e64 s[34:35], v[30:31], v[32:33]
2381; GFX900-NEXT:    v_min_f64 v[30:31], v[30:31], v[32:33]
2382; GFX900-NEXT:    v_mov_b32_e32 v32, 0x7ff80000
2383; GFX900-NEXT:    v_cndmask_b32_e32 v1, v1, v32, vcc
2384; GFX900-NEXT:    v_cndmask_b32_e64 v3, v3, v32, s[4:5]
2385; GFX900-NEXT:    v_cndmask_b32_e64 v5, v5, v32, s[6:7]
2386; GFX900-NEXT:    v_cndmask_b32_e64 v7, v7, v32, s[8:9]
2387; GFX900-NEXT:    v_cndmask_b32_e64 v9, v9, v32, s[10:11]
2388; GFX900-NEXT:    v_cndmask_b32_e64 v11, v11, v32, s[12:13]
2389; GFX900-NEXT:    v_cndmask_b32_e64 v13, v13, v32, s[14:15]
2390; GFX900-NEXT:    v_cndmask_b32_e64 v15, v15, v32, s[16:17]
2391; GFX900-NEXT:    v_cndmask_b32_e64 v17, v17, v32, s[18:19]
2392; GFX900-NEXT:    v_cndmask_b32_e64 v19, v19, v32, s[20:21]
2393; GFX900-NEXT:    v_cndmask_b32_e64 v21, v21, v32, s[22:23]
2394; GFX900-NEXT:    v_cndmask_b32_e64 v23, v23, v32, s[24:25]
2395; GFX900-NEXT:    v_cndmask_b32_e64 v25, v25, v32, s[26:27]
2396; GFX900-NEXT:    v_cndmask_b32_e64 v27, v27, v32, s[28:29]
2397; GFX900-NEXT:    v_cndmask_b32_e64 v29, v29, v32, s[30:31]
2398; GFX900-NEXT:    v_cndmask_b32_e64 v31, v31, v32, s[34:35]
2399; GFX900-NEXT:    v_cndmask_b32_e64 v30, v30, 0, s[34:35]
2400; GFX900-NEXT:    v_readlane_b32 s35, v34, 3
2401; GFX900-NEXT:    v_readlane_b32 s34, v34, 2
2402; GFX900-NEXT:    v_readlane_b32 s31, v34, 1
2403; GFX900-NEXT:    v_readlane_b32 s30, v34, 0
2404; GFX900-NEXT:    s_xor_saveexec_b64 s[4:5], -1
2405; GFX900-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:132 ; 4-byte Folded Reload
2406; GFX900-NEXT:    s_mov_b64 exec, s[4:5]
2407; GFX900-NEXT:    s_waitcnt vmcnt(0)
2408; GFX900-NEXT:    s_setpc_b64 s[30:31]
2409;
2410; GFX950-LABEL: v_minimum_v16f64:
2411; GFX950:       ; %bb.0:
2412; GFX950-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2413; GFX950-NEXT:    v_accvgpr_write_b32 a1, v40 ; Reload Reuse
2414; GFX950-NEXT:    v_accvgpr_write_b32 a2, v41 ; Reload Reuse
2415; GFX950-NEXT:    v_accvgpr_write_b32 a3, v42 ; Reload Reuse
2416; GFX950-NEXT:    v_accvgpr_write_b32 a4, v43 ; Reload Reuse
2417; GFX950-NEXT:    v_accvgpr_write_b32 a5, v44 ; Reload Reuse
2418; GFX950-NEXT:    v_accvgpr_write_b32 a6, v45 ; Reload Reuse
2419; GFX950-NEXT:    v_accvgpr_write_b32 a7, v46 ; Reload Reuse
2420; GFX950-NEXT:    v_accvgpr_write_b32 a8, v47 ; Reload Reuse
2421; GFX950-NEXT:    v_accvgpr_write_b32 a9, v56 ; Reload Reuse
2422; GFX950-NEXT:    v_accvgpr_write_b32 a10, v57 ; Reload Reuse
2423; GFX950-NEXT:    scratch_load_dword v37, off, s32 offset:16
2424; GFX950-NEXT:    scratch_load_dword v36, off, s32 offset:12
2425; GFX950-NEXT:    scratch_load_dword v39, off, s32 offset:24
2426; GFX950-NEXT:    scratch_load_dword v38, off, s32 offset:20
2427; GFX950-NEXT:    scratch_load_dword v49, off, s32 offset:32
2428; GFX950-NEXT:    scratch_load_dword v48, off, s32 offset:28
2429; GFX950-NEXT:    scratch_load_dword v57, off, s32 offset:8
2430; GFX950-NEXT:    scratch_load_dword v56, off, s32 offset:4
2431; GFX950-NEXT:    scratch_load_dword v47, off, s32 offset:40
2432; GFX950-NEXT:    scratch_load_dword v46, off, s32 offset:36
2433; GFX950-NEXT:    scratch_load_dword v45, off, s32 offset:48
2434; GFX950-NEXT:    scratch_load_dword v44, off, s32 offset:44
2435; GFX950-NEXT:    scratch_load_dword v43, off, s32 offset:56
2436; GFX950-NEXT:    scratch_load_dword v42, off, s32 offset:52
2437; GFX950-NEXT:    scratch_load_dword v41, off, s32 offset:64
2438; GFX950-NEXT:    scratch_load_dword v40, off, s32 offset:60
2439; GFX950-NEXT:    scratch_load_dword v55, off, s32 offset:72
2440; GFX950-NEXT:    scratch_load_dword v54, off, s32 offset:68
2441; GFX950-NEXT:    scratch_load_dword v53, off, s32 offset:80
2442; GFX950-NEXT:    scratch_load_dword v52, off, s32 offset:76
2443; GFX950-NEXT:    scratch_load_dword v51, off, s32 offset:88
2444; GFX950-NEXT:    scratch_load_dword v50, off, s32 offset:84
2445; GFX950-NEXT:    scratch_load_dword v35, off, s32 offset:96
2446; GFX950-NEXT:    scratch_load_dword v34, off, s32 offset:92
2447; GFX950-NEXT:    scratch_load_dword v31, off, s32
2448; GFX950-NEXT:    scratch_load_dword v33, off, s32 offset:104
2449; GFX950-NEXT:    scratch_load_dword v32, off, s32 offset:100
2450; GFX950-NEXT:    v_accvgpr_write_b32 a11, v58 ; Reload Reuse
2451; GFX950-NEXT:    v_accvgpr_write_b32 a12, v59 ; Reload Reuse
2452; GFX950-NEXT:    v_accvgpr_write_b32 a13, v60 ; Reload Reuse
2453; GFX950-NEXT:    v_accvgpr_write_b32 a14, v61 ; Reload Reuse
2454; GFX950-NEXT:    v_accvgpr_write_b32 a15, v62 ; Reload Reuse
2455; GFX950-NEXT:    v_accvgpr_write_b32 a16, v63 ; Reload Reuse
2456; GFX950-NEXT:    s_waitcnt vmcnt(25)
2457; GFX950-NEXT:    v_min_f64 v[58:59], v[2:3], v[36:37]
2458; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[2:3], v[36:37]
2459; GFX950-NEXT:    scratch_load_dword v37, off, s32 offset:112
2460; GFX950-NEXT:    scratch_load_dword v36, off, s32 offset:108
2461; GFX950-NEXT:    s_waitcnt vmcnt(25)
2462; GFX950-NEXT:    v_min_f64 v[60:61], v[4:5], v[38:39]
2463; GFX950-NEXT:    v_cmp_u_f64_e64 s[0:1], v[4:5], v[38:39]
2464; GFX950-NEXT:    scratch_load_dword v39, off, s32 offset:120
2465; GFX950-NEXT:    scratch_load_dword v38, off, s32 offset:116
2466; GFX950-NEXT:    s_waitcnt vmcnt(25)
2467; GFX950-NEXT:    v_min_f64 v[62:63], v[6:7], v[48:49]
2468; GFX950-NEXT:    v_cmp_u_f64_e64 s[2:3], v[6:7], v[48:49]
2469; GFX950-NEXT:    scratch_load_dword v49, off, s32 offset:128
2470; GFX950-NEXT:    scratch_load_dword v48, off, s32 offset:124
2471; GFX950-NEXT:    s_waitcnt vmcnt(25)
2472; GFX950-NEXT:    v_min_f64 v[2:3], v[0:1], v[56:57]
2473; GFX950-NEXT:    v_cmp_u_f64_e64 s[4:5], v[0:1], v[56:57]
2474; GFX950-NEXT:    v_mov_b32_e32 v0, 0x7ff80000
2475; GFX950-NEXT:    s_waitcnt vmcnt(23)
2476; GFX950-NEXT:    v_min_f64 v[56:57], v[8:9], v[46:47]
2477; GFX950-NEXT:    v_cndmask_b32_e64 v1, v2, 0, s[4:5]
2478; GFX950-NEXT:    v_accvgpr_write_b32 a0, v1
2479; GFX950-NEXT:    v_cndmask_b32_e64 v1, v3, v0, s[4:5]
2480; GFX950-NEXT:    v_cndmask_b32_e64 v2, v58, 0, vcc
2481; GFX950-NEXT:    v_cndmask_b32_e32 v3, v59, v0, vcc
2482; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[8:9], v[46:47]
2483; GFX950-NEXT:    s_waitcnt vmcnt(21)
2484; GFX950-NEXT:    v_min_f64 v[46:47], v[10:11], v[44:45]
2485; GFX950-NEXT:    v_cndmask_b32_e64 v4, v60, 0, s[0:1]
2486; GFX950-NEXT:    v_cndmask_b32_e64 v8, v56, 0, vcc
2487; GFX950-NEXT:    v_cndmask_b32_e32 v9, v57, v0, vcc
2488; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[10:11], v[44:45]
2489; GFX950-NEXT:    s_waitcnt vmcnt(19)
2490; GFX950-NEXT:    v_min_f64 v[44:45], v[12:13], v[42:43]
2491; GFX950-NEXT:    v_cndmask_b32_e64 v5, v61, v0, s[0:1]
2492; GFX950-NEXT:    v_cndmask_b32_e64 v10, v46, 0, vcc
2493; GFX950-NEXT:    v_cndmask_b32_e32 v11, v47, v0, vcc
2494; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[12:13], v[42:43]
2495; GFX950-NEXT:    s_waitcnt vmcnt(17)
2496; GFX950-NEXT:    v_min_f64 v[42:43], v[14:15], v[40:41]
2497; GFX950-NEXT:    v_cndmask_b32_e64 v6, v62, 0, s[2:3]
2498; GFX950-NEXT:    v_cndmask_b32_e64 v12, v44, 0, vcc
2499; GFX950-NEXT:    v_cndmask_b32_e32 v13, v45, v0, vcc
2500; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[14:15], v[40:41]
2501; GFX950-NEXT:    s_waitcnt vmcnt(15)
2502; GFX950-NEXT:    v_min_f64 v[40:41], v[16:17], v[54:55]
2503; GFX950-NEXT:    v_cndmask_b32_e64 v7, v63, v0, s[2:3]
2504; GFX950-NEXT:    v_cndmask_b32_e64 v14, v42, 0, vcc
2505; GFX950-NEXT:    v_cndmask_b32_e32 v15, v43, v0, vcc
2506; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[16:17], v[54:55]
2507; GFX950-NEXT:    s_waitcnt vmcnt(13)
2508; GFX950-NEXT:    v_min_f64 v[54:55], v[18:19], v[52:53]
2509; GFX950-NEXT:    v_accvgpr_read_b32 v63, a16 ; Reload Reuse
2510; GFX950-NEXT:    v_cndmask_b32_e64 v16, v40, 0, vcc
2511; GFX950-NEXT:    v_cndmask_b32_e32 v17, v41, v0, vcc
2512; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[18:19], v[52:53]
2513; GFX950-NEXT:    s_waitcnt vmcnt(11)
2514; GFX950-NEXT:    v_min_f64 v[52:53], v[20:21], v[50:51]
2515; GFX950-NEXT:    v_accvgpr_read_b32 v62, a15 ; Reload Reuse
2516; GFX950-NEXT:    v_cndmask_b32_e64 v18, v54, 0, vcc
2517; GFX950-NEXT:    v_cndmask_b32_e32 v19, v55, v0, vcc
2518; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[20:21], v[50:51]
2519; GFX950-NEXT:    s_waitcnt vmcnt(9)
2520; GFX950-NEXT:    v_min_f64 v[50:51], v[22:23], v[34:35]
2521; GFX950-NEXT:    v_accvgpr_read_b32 v61, a14 ; Reload Reuse
2522; GFX950-NEXT:    v_cndmask_b32_e64 v20, v52, 0, vcc
2523; GFX950-NEXT:    v_cndmask_b32_e32 v21, v53, v0, vcc
2524; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[22:23], v[34:35]
2525; GFX950-NEXT:    s_waitcnt vmcnt(6)
2526; GFX950-NEXT:    v_min_f64 v[34:35], v[24:25], v[32:33]
2527; GFX950-NEXT:    v_accvgpr_read_b32 v60, a13 ; Reload Reuse
2528; GFX950-NEXT:    v_cndmask_b32_e64 v22, v50, 0, vcc
2529; GFX950-NEXT:    v_cndmask_b32_e32 v23, v51, v0, vcc
2530; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[24:25], v[32:33]
2531; GFX950-NEXT:    v_accvgpr_read_b32 v59, a12 ; Reload Reuse
2532; GFX950-NEXT:    v_accvgpr_read_b32 v58, a11 ; Reload Reuse
2533; GFX950-NEXT:    v_cndmask_b32_e64 v24, v34, 0, vcc
2534; GFX950-NEXT:    v_cndmask_b32_e32 v25, v35, v0, vcc
2535; GFX950-NEXT:    v_accvgpr_read_b32 v57, a10 ; Reload Reuse
2536; GFX950-NEXT:    v_accvgpr_read_b32 v56, a9 ; Reload Reuse
2537; GFX950-NEXT:    v_accvgpr_read_b32 v47, a8 ; Reload Reuse
2538; GFX950-NEXT:    v_accvgpr_read_b32 v46, a7 ; Reload Reuse
2539; GFX950-NEXT:    v_accvgpr_read_b32 v45, a6 ; Reload Reuse
2540; GFX950-NEXT:    v_accvgpr_read_b32 v44, a5 ; Reload Reuse
2541; GFX950-NEXT:    v_accvgpr_read_b32 v43, a4 ; Reload Reuse
2542; GFX950-NEXT:    v_accvgpr_read_b32 v42, a3 ; Reload Reuse
2543; GFX950-NEXT:    v_accvgpr_read_b32 v41, a2 ; Reload Reuse
2544; GFX950-NEXT:    v_accvgpr_read_b32 v40, a1 ; Reload Reuse
2545; GFX950-NEXT:    s_waitcnt vmcnt(4)
2546; GFX950-NEXT:    v_min_f64 v[32:33], v[26:27], v[36:37]
2547; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[26:27], v[36:37]
2548; GFX950-NEXT:    s_nop 1
2549; GFX950-NEXT:    v_cndmask_b32_e64 v26, v32, 0, vcc
2550; GFX950-NEXT:    v_cndmask_b32_e32 v27, v33, v0, vcc
2551; GFX950-NEXT:    s_waitcnt vmcnt(2)
2552; GFX950-NEXT:    v_min_f64 v[32:33], v[28:29], v[38:39]
2553; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[28:29], v[38:39]
2554; GFX950-NEXT:    s_nop 1
2555; GFX950-NEXT:    v_cndmask_b32_e64 v28, v32, 0, vcc
2556; GFX950-NEXT:    v_cndmask_b32_e32 v29, v33, v0, vcc
2557; GFX950-NEXT:    s_waitcnt vmcnt(0)
2558; GFX950-NEXT:    v_min_f64 v[32:33], v[30:31], v[48:49]
2559; GFX950-NEXT:    v_cmp_u_f64_e32 vcc, v[30:31], v[48:49]
2560; GFX950-NEXT:    s_nop 1
2561; GFX950-NEXT:    v_cndmask_b32_e64 v30, v32, 0, vcc
2562; GFX950-NEXT:    v_cndmask_b32_e32 v31, v33, v0, vcc
2563; GFX950-NEXT:    v_accvgpr_read_b32 v0, a0
2564; GFX950-NEXT:    s_setpc_b64 s[30:31]
2565;
2566; GFX10-LABEL: v_minimum_v16f64:
2567; GFX10:       ; %bb.0:
2568; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2569; GFX10-NEXT:    s_clause 0x19
2570; GFX10-NEXT:    buffer_load_dword v32, off, s[0:3], s32 offset:16
2571; GFX10-NEXT:    buffer_load_dword v31, off, s[0:3], s32 offset:12
2572; GFX10-NEXT:    buffer_load_dword v34, off, s[0:3], s32 offset:24
2573; GFX10-NEXT:    buffer_load_dword v33, off, s[0:3], s32 offset:20
2574; GFX10-NEXT:    buffer_load_dword v36, off, s[0:3], s32 offset:32
2575; GFX10-NEXT:    buffer_load_dword v35, off, s[0:3], s32 offset:28
2576; GFX10-NEXT:    buffer_load_dword v37, off, s[0:3], s32 offset:36
2577; GFX10-NEXT:    buffer_load_dword v48, off, s[0:3], s32 offset:68
2578; GFX10-NEXT:    buffer_load_dword v51, off, s[0:3], s32 offset:64
2579; GFX10-NEXT:    buffer_load_dword v50, off, s[0:3], s32 offset:60
2580; GFX10-NEXT:    buffer_load_dword v53, off, s[0:3], s32 offset:56
2581; GFX10-NEXT:    buffer_load_dword v52, off, s[0:3], s32 offset:52
2582; GFX10-NEXT:    buffer_load_dword v55, off, s[0:3], s32 offset:48
2583; GFX10-NEXT:    buffer_load_dword v54, off, s[0:3], s32 offset:44
2584; GFX10-NEXT:    buffer_load_dword v38, off, s[0:3], s32 offset:40
2585; GFX10-NEXT:    buffer_load_dword v65, off, s[0:3], s32 offset:8
2586; GFX10-NEXT:    buffer_load_dword v64, off, s[0:3], s32 offset:4
2587; GFX10-NEXT:    buffer_load_dword v66, off, s[0:3], s32 offset:100
2588; GFX10-NEXT:    buffer_load_dword v69, off, s[0:3], s32 offset:96
2589; GFX10-NEXT:    buffer_load_dword v68, off, s[0:3], s32 offset:92
2590; GFX10-NEXT:    buffer_load_dword v71, off, s[0:3], s32 offset:88
2591; GFX10-NEXT:    buffer_load_dword v70, off, s[0:3], s32 offset:84
2592; GFX10-NEXT:    buffer_load_dword v81, off, s[0:3], s32 offset:80
2593; GFX10-NEXT:    buffer_load_dword v80, off, s[0:3], s32 offset:76
2594; GFX10-NEXT:    buffer_load_dword v49, off, s[0:3], s32 offset:72
2595; GFX10-NEXT:    buffer_load_dword v67, off, s[0:3], s32 offset:104
2596; GFX10-NEXT:    s_waitcnt vmcnt(24)
2597; GFX10-NEXT:    v_min_f64 v[82:83], v[2:3], v[31:32]
2598; GFX10-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[2:3], v[31:32]
2599; GFX10-NEXT:    s_waitcnt vmcnt(22)
2600; GFX10-NEXT:    v_min_f64 v[84:85], v[4:5], v[33:34]
2601; GFX10-NEXT:    v_cmp_u_f64_e64 s4, v[4:5], v[33:34]
2602; GFX10-NEXT:    s_clause 0x3
2603; GFX10-NEXT:    buffer_load_dword v3, off, s[0:3], s32 offset:120
2604; GFX10-NEXT:    buffer_load_dword v2, off, s[0:3], s32 offset:116
2605; GFX10-NEXT:    buffer_load_dword v5, off, s[0:3], s32 offset:112
2606; GFX10-NEXT:    buffer_load_dword v4, off, s[0:3], s32 offset:108
2607; GFX10-NEXT:    s_waitcnt vmcnt(24)
2608; GFX10-NEXT:    v_min_f64 v[32:33], v[6:7], v[35:36]
2609; GFX10-NEXT:    v_cmp_u_f64_e64 s5, v[6:7], v[35:36]
2610; GFX10-NEXT:    s_clause 0x2
2611; GFX10-NEXT:    buffer_load_dword v31, off, s[0:3], s32
2612; GFX10-NEXT:    buffer_load_dword v7, off, s[0:3], s32 offset:128
2613; GFX10-NEXT:    buffer_load_dword v6, off, s[0:3], s32 offset:124
2614; GFX10-NEXT:    s_waitcnt vmcnt(23)
2615; GFX10-NEXT:    v_cmp_u_f64_e64 s10, v[14:15], v[50:51]
2616; GFX10-NEXT:    s_waitcnt vmcnt(21)
2617; GFX10-NEXT:    v_cmp_u_f64_e64 s9, v[12:13], v[52:53]
2618; GFX10-NEXT:    s_waitcnt vmcnt(19)
2619; GFX10-NEXT:    v_cmp_u_f64_e64 s7, v[10:11], v[54:55]
2620; GFX10-NEXT:    s_waitcnt vmcnt(18)
2621; GFX10-NEXT:    v_min_f64 v[34:35], v[8:9], v[37:38]
2622; GFX10-NEXT:    v_cmp_u_f64_e64 s6, v[8:9], v[37:38]
2623; GFX10-NEXT:    s_waitcnt vmcnt(16)
2624; GFX10-NEXT:    v_min_f64 v[8:9], v[0:1], v[64:65]
2625; GFX10-NEXT:    v_min_f64 v[36:37], v[10:11], v[54:55]
2626; GFX10-NEXT:    v_cmp_u_f64_e64 s8, v[0:1], v[64:65]
2627; GFX10-NEXT:    v_min_f64 v[38:39], v[12:13], v[52:53]
2628; GFX10-NEXT:    v_min_f64 v[52:53], v[14:15], v[50:51]
2629; GFX10-NEXT:    s_waitcnt vmcnt(11)
2630; GFX10-NEXT:    v_min_f64 v[54:55], v[20:21], v[70:71]
2631; GFX10-NEXT:    v_cmp_u_f64_e64 s13, v[20:21], v[70:71]
2632; GFX10-NEXT:    s_waitcnt vmcnt(9)
2633; GFX10-NEXT:    v_cmp_u_f64_e64 s12, v[18:19], v[80:81]
2634; GFX10-NEXT:    s_waitcnt vmcnt(8)
2635; GFX10-NEXT:    v_min_f64 v[50:51], v[16:17], v[48:49]
2636; GFX10-NEXT:    v_cmp_u_f64_e64 s11, v[16:17], v[48:49]
2637; GFX10-NEXT:    v_min_f64 v[48:49], v[18:19], v[80:81]
2638; GFX10-NEXT:    v_min_f64 v[64:65], v[22:23], v[68:69]
2639; GFX10-NEXT:    v_cmp_u_f64_e64 s14, v[22:23], v[68:69]
2640; GFX10-NEXT:    s_waitcnt vmcnt(7)
2641; GFX10-NEXT:    v_min_f64 v[68:69], v[24:25], v[66:67]
2642; GFX10-NEXT:    v_cmp_u_f64_e64 s15, v[24:25], v[66:67]
2643; GFX10-NEXT:    v_cndmask_b32_e64 v10, v36, 0, s7
2644; GFX10-NEXT:    v_cndmask_b32_e64 v0, v8, 0, s8
2645; GFX10-NEXT:    v_cndmask_b32_e64 v1, v9, 0x7ff80000, s8
2646; GFX10-NEXT:    v_cndmask_b32_e64 v8, v34, 0, s6
2647; GFX10-NEXT:    v_cndmask_b32_e64 v9, v35, 0x7ff80000, s6
2648; GFX10-NEXT:    v_cndmask_b32_e64 v11, v37, 0x7ff80000, s7
2649; GFX10-NEXT:    v_cndmask_b32_e64 v12, v38, 0, s9
2650; GFX10-NEXT:    v_cndmask_b32_e64 v13, v39, 0x7ff80000, s9
2651; GFX10-NEXT:    v_cndmask_b32_e64 v14, v52, 0, s10
2652; GFX10-NEXT:    v_cndmask_b32_e64 v15, v53, 0x7ff80000, s10
2653; GFX10-NEXT:    v_cndmask_b32_e64 v16, v50, 0, s11
2654; GFX10-NEXT:    v_cndmask_b32_e64 v17, v51, 0x7ff80000, s11
2655; GFX10-NEXT:    v_cndmask_b32_e64 v18, v48, 0, s12
2656; GFX10-NEXT:    v_cndmask_b32_e64 v19, v49, 0x7ff80000, s12
2657; GFX10-NEXT:    v_cndmask_b32_e64 v20, v54, 0, s13
2658; GFX10-NEXT:    v_cndmask_b32_e64 v21, v55, 0x7ff80000, s13
2659; GFX10-NEXT:    v_cndmask_b32_e64 v22, v64, 0, s14
2660; GFX10-NEXT:    v_cndmask_b32_e64 v23, v65, 0x7ff80000, s14
2661; GFX10-NEXT:    v_cndmask_b32_e64 v24, v68, 0, s15
2662; GFX10-NEXT:    v_cndmask_b32_e64 v25, v69, 0x7ff80000, s15
2663; GFX10-NEXT:    s_waitcnt vmcnt(5)
2664; GFX10-NEXT:    v_min_f64 v[70:71], v[28:29], v[2:3]
2665; GFX10-NEXT:    v_cmp_u_f64_e64 s17, v[28:29], v[2:3]
2666; GFX10-NEXT:    s_waitcnt vmcnt(3)
2667; GFX10-NEXT:    v_min_f64 v[66:67], v[26:27], v[4:5]
2668; GFX10-NEXT:    v_cmp_u_f64_e64 s16, v[26:27], v[4:5]
2669; GFX10-NEXT:    v_cndmask_b32_e64 v2, v82, 0, vcc_lo
2670; GFX10-NEXT:    s_waitcnt vmcnt(0)
2671; GFX10-NEXT:    v_min_f64 v[80:81], v[30:31], v[6:7]
2672; GFX10-NEXT:    v_cmp_u_f64_e64 s18, v[30:31], v[6:7]
2673; GFX10-NEXT:    v_cndmask_b32_e64 v3, v83, 0x7ff80000, vcc_lo
2674; GFX10-NEXT:    v_cndmask_b32_e64 v4, v84, 0, s4
2675; GFX10-NEXT:    v_cndmask_b32_e64 v5, v85, 0x7ff80000, s4
2676; GFX10-NEXT:    v_cndmask_b32_e64 v6, v32, 0, s5
2677; GFX10-NEXT:    v_cndmask_b32_e64 v7, v33, 0x7ff80000, s5
2678; GFX10-NEXT:    v_cndmask_b32_e64 v28, v70, 0, s17
2679; GFX10-NEXT:    v_cndmask_b32_e64 v29, v71, 0x7ff80000, s17
2680; GFX10-NEXT:    v_cndmask_b32_e64 v26, v66, 0, s16
2681; GFX10-NEXT:    v_cndmask_b32_e64 v27, v67, 0x7ff80000, s16
2682; GFX10-NEXT:    v_cndmask_b32_e64 v30, v80, 0, s18
2683; GFX10-NEXT:    v_cndmask_b32_e64 v31, v81, 0x7ff80000, s18
2684; GFX10-NEXT:    s_setpc_b64 s[30:31]
2685;
2686; GFX11-LABEL: v_minimum_v16f64:
2687; GFX11:       ; %bb.0:
2688; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
2689; GFX11-NEXT:    s_clause 0x1f
2690; GFX11-NEXT:    scratch_load_b32 v31, off, s32
2691; GFX11-NEXT:    scratch_load_b32 v33, off, s32 offset:8
2692; GFX11-NEXT:    scratch_load_b32 v32, off, s32 offset:4
2693; GFX11-NEXT:    scratch_load_b32 v35, off, s32 offset:16
2694; GFX11-NEXT:    scratch_load_b32 v34, off, s32 offset:12
2695; GFX11-NEXT:    scratch_load_b32 v37, off, s32 offset:24
2696; GFX11-NEXT:    scratch_load_b32 v36, off, s32 offset:20
2697; GFX11-NEXT:    scratch_load_b32 v39, off, s32 offset:32
2698; GFX11-NEXT:    scratch_load_b32 v38, off, s32 offset:28
2699; GFX11-NEXT:    scratch_load_b32 v49, off, s32 offset:40
2700; GFX11-NEXT:    scratch_load_b32 v48, off, s32 offset:36
2701; GFX11-NEXT:    scratch_load_b32 v51, off, s32 offset:48
2702; GFX11-NEXT:    scratch_load_b32 v50, off, s32 offset:44
2703; GFX11-NEXT:    scratch_load_b32 v53, off, s32 offset:56
2704; GFX11-NEXT:    scratch_load_b32 v52, off, s32 offset:52
2705; GFX11-NEXT:    scratch_load_b32 v55, off, s32 offset:64
2706; GFX11-NEXT:    scratch_load_b32 v54, off, s32 offset:60
2707; GFX11-NEXT:    scratch_load_b32 v65, off, s32 offset:72
2708; GFX11-NEXT:    scratch_load_b32 v64, off, s32 offset:68
2709; GFX11-NEXT:    scratch_load_b32 v67, off, s32 offset:80
2710; GFX11-NEXT:    scratch_load_b32 v66, off, s32 offset:76
2711; GFX11-NEXT:    scratch_load_b32 v69, off, s32 offset:88
2712; GFX11-NEXT:    scratch_load_b32 v68, off, s32 offset:84
2713; GFX11-NEXT:    scratch_load_b32 v71, off, s32 offset:96
2714; GFX11-NEXT:    scratch_load_b32 v70, off, s32 offset:92
2715; GFX11-NEXT:    scratch_load_b32 v81, off, s32 offset:104
2716; GFX11-NEXT:    scratch_load_b32 v80, off, s32 offset:100
2717; GFX11-NEXT:    scratch_load_b32 v83, off, s32 offset:112
2718; GFX11-NEXT:    scratch_load_b32 v82, off, s32 offset:108
2719; GFX11-NEXT:    scratch_load_b32 v85, off, s32 offset:120
2720; GFX11-NEXT:    scratch_load_b32 v84, off, s32 offset:116
2721; GFX11-NEXT:    scratch_load_b32 v87, off, s32 offset:128
2722; GFX11-NEXT:    scratch_load_b32 v86, off, s32 offset:124
2723; GFX11-NEXT:    s_waitcnt vmcnt(30)
2724; GFX11-NEXT:    v_min_f64 v[96:97], v[0:1], v[32:33]
2725; GFX11-NEXT:    v_cmp_u_f64_e32 vcc_lo, v[0:1], v[32:33]
2726; GFX11-NEXT:    s_waitcnt vmcnt(28)
2727; GFX11-NEXT:    v_min_f64 v[32:33], v[2:3], v[34:35]
2728; GFX11-NEXT:    v_cmp_u_f64_e64 s0, v[2:3], v[34:35]
2729; GFX11-NEXT:    s_waitcnt vmcnt(26)
2730; GFX11-NEXT:    v_min_f64 v[34:35], v[4:5], v[36:37]
2731; GFX11-NEXT:    v_cmp_u_f64_e64 s1, v[4:5], v[36:37]
2732; GFX11-NEXT:    s_waitcnt vmcnt(24)
2733; GFX11-NEXT:    v_min_f64 v[36:37], v[6:7], v[38:39]
2734; GFX11-NEXT:    v_cmp_u_f64_e64 s2, v[6:7], v[38:39]
2735; GFX11-NEXT:    s_waitcnt vmcnt(22)
2736; GFX11-NEXT:    v_min_f64 v[38:39], v[8:9], v[48:49]
2737; GFX11-NEXT:    v_cmp_u_f64_e64 s3, v[8:9], v[48:49]
2738; GFX11-NEXT:    s_waitcnt vmcnt(20)
2739; GFX11-NEXT:    v_min_f64 v[48:49], v[10:11], v[50:51]
2740; GFX11-NEXT:    v_cmp_u_f64_e64 s4, v[10:11], v[50:51]
2741; GFX11-NEXT:    s_waitcnt vmcnt(18)
2742; GFX11-NEXT:    v_min_f64 v[50:51], v[12:13], v[52:53]
2743; GFX11-NEXT:    v_cmp_u_f64_e64 s5, v[12:13], v[52:53]
2744; GFX11-NEXT:    s_waitcnt vmcnt(16)
2745; GFX11-NEXT:    v_min_f64 v[52:53], v[14:15], v[54:55]
2746; GFX11-NEXT:    v_cmp_u_f64_e64 s6, v[14:15], v[54:55]
2747; GFX11-NEXT:    s_waitcnt vmcnt(14)
2748; GFX11-NEXT:    v_min_f64 v[54:55], v[16:17], v[64:65]
2749; GFX11-NEXT:    v_cmp_u_f64_e64 s7, v[16:17], v[64:65]
2750; GFX11-NEXT:    s_waitcnt vmcnt(12)
2751; GFX11-NEXT:    v_min_f64 v[64:65], v[18:19], v[66:67]
2752; GFX11-NEXT:    v_cmp_u_f64_e64 s8, v[18:19], v[66:67]
2753; GFX11-NEXT:    s_waitcnt vmcnt(10)
2754; GFX11-NEXT:    v_min_f64 v[66:67], v[20:21], v[68:69]
2755; GFX11-NEXT:    v_cmp_u_f64_e64 s9, v[20:21], v[68:69]
2756; GFX11-NEXT:    s_waitcnt vmcnt(8)
2757; GFX11-NEXT:    v_min_f64 v[68:69], v[22:23], v[70:71]
2758; GFX11-NEXT:    v_cmp_u_f64_e64 s10, v[22:23], v[70:71]
2759; GFX11-NEXT:    s_waitcnt vmcnt(6)
2760; GFX11-NEXT:    v_min_f64 v[70:71], v[24:25], v[80:81]
2761; GFX11-NEXT:    v_cmp_u_f64_e64 s11, v[24:25], v[80:81]
2762; GFX11-NEXT:    s_waitcnt vmcnt(4)
2763; GFX11-NEXT:    v_min_f64 v[80:81], v[26:27], v[82:83]
2764; GFX11-NEXT:    v_cmp_u_f64_e64 s12, v[26:27], v[82:83]
2765; GFX11-NEXT:    s_waitcnt vmcnt(2)
2766; GFX11-NEXT:    v_min_f64 v[82:83], v[28:29], v[84:85]
2767; GFX11-NEXT:    v_cmp_u_f64_e64 s13, v[28:29], v[84:85]
2768; GFX11-NEXT:    s_waitcnt vmcnt(0)
2769; GFX11-NEXT:    v_min_f64 v[84:85], v[30:31], v[86:87]
2770; GFX11-NEXT:    v_cmp_u_f64_e64 s14, v[30:31], v[86:87]
2771; GFX11-NEXT:    v_cndmask_b32_e64 v0, v96, 0, vcc_lo
2772; GFX11-NEXT:    v_cndmask_b32_e64 v1, v97, 0x7ff80000, vcc_lo
2773; GFX11-NEXT:    v_cndmask_b32_e64 v2, v32, 0, s0
2774; GFX11-NEXT:    v_cndmask_b32_e64 v3, v33, 0x7ff80000, s0
2775; GFX11-NEXT:    v_cndmask_b32_e64 v4, v34, 0, s1
2776; GFX11-NEXT:    v_cndmask_b32_e64 v5, v35, 0x7ff80000, s1
2777; GFX11-NEXT:    v_cndmask_b32_e64 v6, v36, 0, s2
2778; GFX11-NEXT:    v_cndmask_b32_e64 v7, v37, 0x7ff80000, s2
2779; GFX11-NEXT:    v_cndmask_b32_e64 v8, v38, 0, s3
2780; GFX11-NEXT:    v_cndmask_b32_e64 v9, v39, 0x7ff80000, s3
2781; GFX11-NEXT:    v_cndmask_b32_e64 v10, v48, 0, s4
2782; GFX11-NEXT:    v_cndmask_b32_e64 v11, v49, 0x7ff80000, s4
2783; GFX11-NEXT:    v_cndmask_b32_e64 v12, v50, 0, s5
2784; GFX11-NEXT:    v_cndmask_b32_e64 v13, v51, 0x7ff80000, s5
2785; GFX11-NEXT:    v_cndmask_b32_e64 v14, v52, 0, s6
2786; GFX11-NEXT:    v_cndmask_b32_e64 v15, v53, 0x7ff80000, s6
2787; GFX11-NEXT:    v_cndmask_b32_e64 v16, v54, 0, s7
2788; GFX11-NEXT:    v_cndmask_b32_e64 v17, v55, 0x7ff80000, s7
2789; GFX11-NEXT:    v_cndmask_b32_e64 v18, v64, 0, s8
2790; GFX11-NEXT:    v_cndmask_b32_e64 v19, v65, 0x7ff80000, s8
2791; GFX11-NEXT:    v_cndmask_b32_e64 v20, v66, 0, s9
2792; GFX11-NEXT:    v_cndmask_b32_e64 v21, v67, 0x7ff80000, s9
2793; GFX11-NEXT:    v_cndmask_b32_e64 v22, v68, 0, s10
2794; GFX11-NEXT:    v_cndmask_b32_e64 v23, v69, 0x7ff80000, s10
2795; GFX11-NEXT:    v_cndmask_b32_e64 v24, v70, 0, s11
2796; GFX11-NEXT:    v_cndmask_b32_e64 v25, v71, 0x7ff80000, s11
2797; GFX11-NEXT:    v_cndmask_b32_e64 v26, v80, 0, s12
2798; GFX11-NEXT:    v_cndmask_b32_e64 v27, v81, 0x7ff80000, s12
2799; GFX11-NEXT:    v_cndmask_b32_e64 v28, v82, 0, s13
2800; GFX11-NEXT:    v_cndmask_b32_e64 v29, v83, 0x7ff80000, s13
2801; GFX11-NEXT:    v_cndmask_b32_e64 v30, v84, 0, s14
2802; GFX11-NEXT:    v_cndmask_b32_e64 v31, v85, 0x7ff80000, s14
2803; GFX11-NEXT:    s_setpc_b64 s[30:31]
2804;
2805; GFX12-LABEL: v_minimum_v16f64:
2806; GFX12:       ; %bb.0:
2807; GFX12-NEXT:    s_wait_loadcnt_dscnt 0x0
2808; GFX12-NEXT:    s_wait_expcnt 0x0
2809; GFX12-NEXT:    s_wait_samplecnt 0x0
2810; GFX12-NEXT:    s_wait_bvhcnt 0x0
2811; GFX12-NEXT:    s_wait_kmcnt 0x0
2812; GFX12-NEXT:    s_clause 0x1f
2813; GFX12-NEXT:    scratch_load_b32 v31, off, s32
2814; GFX12-NEXT:    scratch_load_b32 v33, off, s32 offset:8
2815; GFX12-NEXT:    scratch_load_b32 v32, off, s32 offset:4
2816; GFX12-NEXT:    scratch_load_b32 v35, off, s32 offset:16
2817; GFX12-NEXT:    scratch_load_b32 v34, off, s32 offset:12
2818; GFX12-NEXT:    scratch_load_b32 v37, off, s32 offset:24
2819; GFX12-NEXT:    scratch_load_b32 v36, off, s32 offset:20
2820; GFX12-NEXT:    scratch_load_b32 v39, off, s32 offset:32
2821; GFX12-NEXT:    scratch_load_b32 v38, off, s32 offset:28
2822; GFX12-NEXT:    scratch_load_b32 v49, off, s32 offset:40
2823; GFX12-NEXT:    scratch_load_b32 v48, off, s32 offset:36
2824; GFX12-NEXT:    scratch_load_b32 v51, off, s32 offset:48
2825; GFX12-NEXT:    scratch_load_b32 v50, off, s32 offset:44
2826; GFX12-NEXT:    scratch_load_b32 v53, off, s32 offset:56
2827; GFX12-NEXT:    scratch_load_b32 v52, off, s32 offset:52
2828; GFX12-NEXT:    scratch_load_b32 v55, off, s32 offset:64
2829; GFX12-NEXT:    scratch_load_b32 v54, off, s32 offset:60
2830; GFX12-NEXT:    scratch_load_b32 v65, off, s32 offset:72
2831; GFX12-NEXT:    scratch_load_b32 v64, off, s32 offset:68
2832; GFX12-NEXT:    scratch_load_b32 v67, off, s32 offset:80
2833; GFX12-NEXT:    scratch_load_b32 v66, off, s32 offset:76
2834; GFX12-NEXT:    scratch_load_b32 v69, off, s32 offset:88
2835; GFX12-NEXT:    scratch_load_b32 v68, off, s32 offset:84
2836; GFX12-NEXT:    scratch_load_b32 v71, off, s32 offset:96
2837; GFX12-NEXT:    scratch_load_b32 v70, off, s32 offset:92
2838; GFX12-NEXT:    scratch_load_b32 v81, off, s32 offset:104
2839; GFX12-NEXT:    scratch_load_b32 v80, off, s32 offset:100
2840; GFX12-NEXT:    scratch_load_b32 v83, off, s32 offset:112
2841; GFX12-NEXT:    scratch_load_b32 v82, off, s32 offset:108
2842; GFX12-NEXT:    scratch_load_b32 v85, off, s32 offset:120
2843; GFX12-NEXT:    scratch_load_b32 v84, off, s32 offset:116
2844; GFX12-NEXT:    scratch_load_b32 v87, off, s32 offset:128
2845; GFX12-NEXT:    scratch_load_b32 v86, off, s32 offset:124
2846; GFX12-NEXT:    s_wait_loadcnt 0x1e
2847; GFX12-NEXT:    v_minimum_f64 v[0:1], v[0:1], v[32:33]
2848; GFX12-NEXT:    s_wait_loadcnt 0x1c
2849; GFX12-NEXT:    v_minimum_f64 v[2:3], v[2:3], v[34:35]
2850; GFX12-NEXT:    s_wait_loadcnt 0x1a
2851; GFX12-NEXT:    v_minimum_f64 v[4:5], v[4:5], v[36:37]
2852; GFX12-NEXT:    s_wait_loadcnt 0x18
2853; GFX12-NEXT:    v_minimum_f64 v[6:7], v[6:7], v[38:39]
2854; GFX12-NEXT:    s_wait_loadcnt 0x16
2855; GFX12-NEXT:    v_minimum_f64 v[8:9], v[8:9], v[48:49]
2856; GFX12-NEXT:    s_wait_loadcnt 0x14
2857; GFX12-NEXT:    v_minimum_f64 v[10:11], v[10:11], v[50:51]
2858; GFX12-NEXT:    s_wait_loadcnt 0x12
2859; GFX12-NEXT:    v_minimum_f64 v[12:13], v[12:13], v[52:53]
2860; GFX12-NEXT:    s_wait_loadcnt 0x10
2861; GFX12-NEXT:    v_minimum_f64 v[14:15], v[14:15], v[54:55]
2862; GFX12-NEXT:    s_wait_loadcnt 0xe
2863; GFX12-NEXT:    v_minimum_f64 v[16:17], v[16:17], v[64:65]
2864; GFX12-NEXT:    s_wait_loadcnt 0xc
2865; GFX12-NEXT:    v_minimum_f64 v[18:19], v[18:19], v[66:67]
2866; GFX12-NEXT:    s_wait_loadcnt 0xa
2867; GFX12-NEXT:    v_minimum_f64 v[20:21], v[20:21], v[68:69]
2868; GFX12-NEXT:    s_wait_loadcnt 0x8
2869; GFX12-NEXT:    v_minimum_f64 v[22:23], v[22:23], v[70:71]
2870; GFX12-NEXT:    s_wait_loadcnt 0x6
2871; GFX12-NEXT:    v_minimum_f64 v[24:25], v[24:25], v[80:81]
2872; GFX12-NEXT:    s_wait_loadcnt 0x4
2873; GFX12-NEXT:    v_minimum_f64 v[26:27], v[26:27], v[82:83]
2874; GFX12-NEXT:    s_wait_loadcnt 0x2
2875; GFX12-NEXT:    v_minimum_f64 v[28:29], v[28:29], v[84:85]
2876; GFX12-NEXT:    s_wait_loadcnt 0x0
2877; GFX12-NEXT:    v_minimum_f64 v[30:31], v[30:31], v[86:87]
2878; GFX12-NEXT:    s_setpc_b64 s[30:31]
2879  %op = call <16 x double> @llvm.minimum.v16f64(<16 x double> %src0, <16 x double> %src1)
2880  ret <16 x double> %op
2881}
2882;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
2883; GCN: {{.*}}
2884